Skip to content

Commit

Permalink
Update 4.1.0 (20231214)
Browse files Browse the repository at this point in the history
  • Loading branch information
peb-adr committed Dec 14, 2023
2 parents 4ed60f4 + cc5ebae commit d0ad508
Show file tree
Hide file tree
Showing 20 changed files with 484 additions and 418 deletions.
1 change: 0 additions & 1 deletion .github/meta/requirements.txt

This file was deleted.

30 changes: 30 additions & 0 deletions CHANGELOG.md
Expand Up @@ -2,6 +2,36 @@

https://openslides.com

## Version 4.1 (2023-12-14)

[Milestone](https://github.com/OpenSlides/OpenSlides/milestones/4.1)

OpenSlides 4.1 – the most important new features:
- New full-text search - organization-wide across all meetings and content
- Single sign-on - integration of an identity provider (IdP) based on SAML
- Electoral list - new voting method for a list of nominations (yes/no/vote per list)
- Extension of the functionality of points of order:
- Configuration of fixed point of order specifications
- Weighting of point of order specifications (for the prioritized ranking of requests to speak)
- internal projectors - only visible to users with administrative permission (e.g. as an internal preview monitor)
- Design improvements:
- New organization-wide color selection for displaying poll and election results (yes/no/vote) and for the organization headbar
- Design improvements: Own logo can be set for all meetings
- New limitation on the visibility of lists of speakers can be configured: Users can "throw in" requests to speak, but they are not allowed to see the other requests to speak (they only see their own name on the list of speakers)
- Optimizations:
- Organization level: new menu item 'Meetings'
- Account menu: various filter options added
- Motions: referring motions are displayed in the motion pdf file
- Motions: Conflict solution in editorial version (visually) optimized
- New custom translation for English to English integrated
- new language support: French
- Various UI improvements
- Extensive performance optimizations and stability improvements; especially for large meetings
- Various bug fixes

All changes can be found in detail in the changelog:
https://support.openslides.com/help/en-gb/45-uber-openslides/80-versionshistorie


## Version 4.0 (2022-12-14)

Expand Down
15 changes: 15 additions & 0 deletions INSTALL.md
Expand Up @@ -189,6 +189,21 @@ To check the current status and start migrations if necessary, run:
- The environment variables `DATASTORE_DATABASE_*` were renamed to
`DATABASE_*`. If custom values were used, this must be reflected in config
files.
- 4.1.0
- PostgreSQL major is updated from 11 to 15. This means postgres will
complain about the data being incompatible
- The recommended way of porting your data is:
1. Dump the contents of your DB ([Database backup](#database-backup))
2. Do the update ([Update to a new version](#update-to-a-new-version))
- Be sure to do fetch the new binary of the `openslides` tool as described
3. Restore the dump into the DB, which should now be running on version 15 ([Database backup](#database-backup))
- If you updated without dumping beforehand and ran into postgres' error log
you can downgrade by using the old `openslides` tool to get PostgreSQL 11
again and then follow these steps
- More intricate proposals exist for upgrading PostgreSQL (such as
https://github.com/tianon/docker-postgres-upgrade) aiming at providing less
downtime but these are not production ready and should only be pursued if
you know specifically what you are doing.


## SSL encryption
Expand Down
2 changes: 1 addition & 1 deletion VERSION
@@ -1 +1 @@
4.0.17
4.1.0
2 changes: 1 addition & 1 deletion dev/docker/docker-compose.dev.yml
Expand Up @@ -32,7 +32,7 @@ services:
- 5679:5678

postgres:
image: postgres:11
image: postgres:15
environment:
- POSTGRES_USER=openslides
- POSTGRES_PASSWORD=openslides
Expand Down
2 changes: 1 addition & 1 deletion dev/docker/docker-compose.test.yml
@@ -1,7 +1,7 @@
version: "3"
services:
postgres-test:
image: postgres:11
image: postgres:15
environment:
- POSTGRES_USER=openslides
- POSTGRES_PASSWORD=openslides
Expand Down
2 changes: 1 addition & 1 deletion dev/scripts/extract-translations.sh
Expand Up @@ -9,6 +9,6 @@ cd "$(dirname $0)"
# merge translations
echo "merging POT files..."
cd ../..
xgettext --sort-output --no-location --omit-header -o i18n/template-en.pot \
xgettext --no-location --omit-header -o i18n/template-en.pot \
openslides-client/client/src/assets/i18n/template-en.pot \
openslides-backend/openslides_backend/i18n/messages/template-en.pot
3 changes: 3 additions & 0 deletions dev/scripts/requirements.txt
@@ -0,0 +1,3 @@
# requirements for update_labels_and_milestones.py

PyGithub
Expand Up @@ -190,43 +190,34 @@
},
],
}
milestones = ["4.1", "4.2", "4.x"]
milestones = ["4.2", "4.3", "4.x"]

token = input("GitHub token: ")
g = Github(token)


for repo_name in repos:
print(repo_name)
repo = g.get_repo(f"OpenSlides/{repo_name}")
existing_labels = repo.get_labels()
target_labels = labels["general"] + labels.get(repo_name, [])
for label in existing_labels:
issues = repo.get_issues(state="open", labels=[label])
duplicates = [l for l in target_labels if l["name"] == label.name]
if not duplicates:
if issues.totalCount == 0:
if repo.get_issues(state="open", labels=[label]).totalCount == 0:
label.delete()
else:
print(f"Label {label.name} in repo {repo_name} is in use!")
else:
target_label = duplicates[0]
if (
duplicates[0]["color"] != label.color or
(isinstance(label.description, str) and duplicates[0].get("description") != label.description) or
(not isinstance(label.description, str) and duplicates[0].get("description"))
target_label["color"] != label.color or
(label.description or "") != target_label.get("description", "")
):
if "description" in duplicates[0]:
label.edit(duplicates[0]["name"], duplicates[0]["color"], duplicates[0]["description"])
else:
label.edit(duplicates[0]["name"], duplicates[0]["color"])
label.edit(**target_label)
for label in target_labels:
if label["name"] not in [l.name for l in existing_labels]:
if "description" in label:
repo.create_label(label["name"], label["color"], label["description"])
else:
repo.create_label(label["name"], label["color"])
repo.create_label(**label)
existing_milestones = {milestone.title for milestone in repo.get_milestones()}
for milestone in milestones:
try:
if milestone not in existing_milestones:
repo.create_milestone(milestone)
except:
print(f"Milestone {milestone} in repo {repo_name} already exists!")

0 comments on commit d0ad508

Please sign in to comment.