Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • hansegucker/AlekSIS-Core
  • pinguin/AlekSIS-Core
  • AlekSIS/official/AlekSIS-Core
  • sunweaver/AlekSIS-Core
  • sggua/AlekSIS-Core
  • edward/AlekSIS-Core
  • magicfelix/AlekSIS-Core
7 results
Show changes
Commits on Source (5)
...@@ -6,14 +6,13 @@ All notable changes to this project will be documented in this file. ...@@ -6,14 +6,13 @@ All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog`_, The format is based on `Keep a Changelog`_,
and this project adheres to `Semantic Versioning`_. and this project adheres to `Semantic Versioning`_.
Unreleased `4.0`_ - 2025-03-29
---------- -------------------
Notable, breaking changes Notable, breaking changes
~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~
The "managed models" feature is mandatory for all models derived from `ExtensibleModel` The "managed models" feature is mandatory for all models derived from `ExtensibleModel`
and requires creating a migration for all downstream models to add the respective and requires creating a migration for all downstream models to add the respective field.
field.
The "additional fields" feature has been removed because it had design issues The "additional fields" feature has been removed because it had design issues
that practically made it unusable in all scenarios. No migration path away that practically made it unusable in all scenarios. No migration path away
...@@ -31,50 +30,45 @@ files accordingly (see docs for further instructions). ...@@ -31,50 +30,45 @@ files accordingly (see docs for further instructions).
As legacy pages are no longer themed, you should update them to the new frontend as soon as possible. As legacy pages are no longer themed, you should update them to the new frontend as soon as possible.
To make setting names consistent, the setting `auth.login.registration.unique_email` To make setting names consistent, the setting ``auth.login.registration.unique_email``
was renamed to `auth.registration.unique_email`. was renamed to ``auth.registration.unique_email``.
To prevent collisions with fields, the class variable `name` on `RegistryObject` has been renamed
to `_class_name`. Please update any references and subclasses.
To prevent collisions with fields, the class variables `verbose_name`, `link`, `color`, To prevent collisions with fields, the class variable ``name`` on ``RegistryObject`` has been renamed
`description` and `permission_required` on `DAVResource` have been prefixed with `dav_`. to ``_class_name``. Please update any references and subclasses.
Please update any references and subclasses.
Added Added
~~~~~ ~~~~~
* Global calendar system * Global calendar system
* Calendar for birthdays of persons * CalDAV and CardDAV for syncing calendars and Persons read-only.
* Holiday model to track information about holidays. * Calendar for birthdays of persons
* Management of personal calendar events.
* Holiday model to track information about holidays.
* Following management views were added: * Following management views were added:
* Rooms * Rooms
* Holiday * Holiday
* [Dev] Components for implementing standard CRUD operations in new frontend. * Global school term select for limiting data to a specific school term.
* [Dev] Options for filtering and sorting of GraphQL queries at the server.
* [Dev] Managed models for instances handled by other apps.
* [Dev] Upload slot sytem for out-of-band uploads in GraphQL clients
* Generic endpoint for retrieving objects as JSON
* [Dev] Base model for organisational entities (external companies, associations,…)
* Management of personal calendar events.
* [Dev] Support running of data checks before/after migrations.
* Views can request to span the entire screen width.
* Add option to disallow reserved usernames.
* Error message when loading in incompatible browser * Error message when loading in incompatible browser
* Tooltips for every information in the person page * Tooltips for every information in the person page
* New menu item "Data management" with Rooms, Announcements, Holidays, and School Terms * New menu item "Data management" with Rooms, Announcements, Holidays, and School Terms
* Priority to sort announcements * Priority to sort announcements
* Generic Roles for describing relationships. Currently used for Person-to-Group relationships.
* Mascot images in multiple places throughout the application.
* Generic endpoint for retrieving objects as JSON
* Add option to disallow reserved usernames.
* Allow matching social accounts to local accounts by their username. * Allow matching social accounts to local accounts by their username.
* Support RP-initiated logout for OIDC applications * Support RP-initiated logout for OIDC applications
* Mascot images in multiple places throughout the application.
* Support native PostgreSQL connection pooling * Support native PostgreSQL connection pooling
* Support profiling with Sentry in addition to tracing * Support profiling with Sentry in addition to tracing
* Make configurable which weekdays appear in the calendar
* Introduce .well-known urlpatterns for apps * Introduce .well-known urlpatterns for apps
* Global school term select for limiting data to a specific school term. * [Dev] Views can request to span the entire screen width.
* [Dev] Base model for organisational entities (external companies, associations,…)
* [Dev] Support running of data checks before/after migrations.
* [Dev] Notifications based on calendar alarms. * [Dev] Notifications based on calendar alarms.
* CalDAV and CardDAV for syncing calendars and Persons read-only. * [Dev] Components for implementing standard CRUD operations in new frontend.
* Generic Roles for describing relationships. Currently used for Person-to-Group relationships. * [Dev] Options for filtering and sorting of GraphQL queries at the server.
* [Dev] Managed models for instances handled by other apps.
* [Dev] Upload slot sytem for out-of-band uploads in GraphQL clients
Changed Changed
~~~~~~~ ~~~~~~~
...@@ -84,56 +78,55 @@ Changed ...@@ -84,56 +78,55 @@ Changed
* Announcements * Announcements
* OAuth Applications * OAuth Applications
* Persons * Persons
* [Dev] Child groups are exposed in the GraphQL type for groups.
* Content width on different screen sizes is more consistent. * Content width on different screen sizes is more consistent.
* Room model icon changed from the default to a specific one. * Room model icon changed from the default to a specific one.
* Show only short name, if available, in announcement recipients * Show only short name, if available, in announcement recipients
* [Dev] Use Django 5.
* Move "Invite person" to persons page * Move "Invite person" to persons page
* Replace all mentions of Redis with Valkey where possible
* Show avatars of groups in all places. * Show avatars of groups in all places.
* Use new auth rate limiting settings * Use new auth rate limiting settings
* Setting `auth.login.registration.unique_email` was renamed to `auth.registration.unique_email`
* Bump Python version to 3.10
* Factor out addresses in their own model and allow multiple addresses with different types * Factor out addresses in their own model and allow multiple addresses with different types
(e. g. home, business) for one person (e. g. home, business) for one person
* Setting ``auth.login.registration.unique_email`` was renamed to ``auth.registration.unique_email``
* Adapt permission scheme for announcements to other permissions. * Adapt permission scheme for announcements to other permissions.
* Use Firefox instead of Chromium for PDF creation and support external webdriver via * Use Firefox instead of Chromium for PDF creation and support external webdriver via
`selenium.url` option, e.g. for use in containers. `selenium.url` option, e.g. for use in containers.
* Rename `RegistryObject`'s class var `name` to `_class_name`. * Replace all mentions of Redis with Valkey where possible
* Prefix `DAVResource`'s class vars with `dav_`. * [Dev] Rename `RegistryObject`'s class var `name` to `_class_name`.
* [Dev] Use Django 5.
* [Dev] Bump Python version to 3.10
* [Dev] Child groups are exposed in the GraphQL type for groups.
Fixed Fixed
~~~~~ ~~~~~
* Accessibility issues with new frontend.
* Improve error handling in frontend and show meaningful error messages.
* GraphQL mutations did not return errors in case of exceptions. * GraphQL mutations did not return errors in case of exceptions.
* Make email field unique over all persons. * Make email field unique over all persons.
* Opening group details wasn't possible without permissions for all person details. * Opening group details wasn't possible without permissions for all person details.
* [Dev] Foreign keys to ExtensiblePolymorphicModel types were using the wrong manager.
* [Dev] Allow activating more frequent polling for Celery task progress.
* [Docs] An example config contained invalid values.
* Correctly redirect to AlekSIS frontend after login with a third-party account. * Correctly redirect to AlekSIS frontend after login with a third-party account.
* Our own account adapter wasn't used so signup settings weren't applied correctly. * Our own account adapter wasn't used so signup settings weren't applied correctly.
* Improve error handling in frontend and show meaningful error messages.
* [Dev] Integrate model validation mechanisms into GraphQL queries.
* [Container] Database backup failed with postgres versions 15 and 16.
* Setting images for groups did not work * Setting images for groups did not work
* Update and fix URLs for 3rdparty login. * Update and fix URLs for 3rdparty login.
* The OpenID Connect Discovery endpoint now returns the issuer data directly * The OpenID Connect Discovery endpoint now returns the issuer data directly
under the URI without a trailing `/`. under the URI without a trailing `/`.
* Not-logged in users were able to access all PDF files (CVE-2025-25683). * Not-logged in users were able to access all PDF files (CVE-2025-25683).
* Accessibility issues with new frontend. * [Docs] An example config contained invalid values.
* [Container] Database backup failed with postgres versions 15 and 16.
* [Dev] Foreign keys to ExtensiblePolymorphicModel types were using the wrong manager.
* [Dev] Allow activating more frequent polling for Celery task progress.
* [Dev] Integrate model validation mechanisms into GraphQL queries.
Removed Removed
~~~~~~~ ~~~~~~~
* Yubikey support (not WebAuthn) was removed * Yubikey support (not WebAuthn) was removed
* Additional fields.
* Legacy pages are no longer themed.
* [Dev] Batching of GraphQL queries.
* [Dev] `_recursive` methods for groups have been removed. * [Dev] `_recursive` methods for groups have been removed.
Developers relying on parent groups need to account for recursion themselves. Developers relying on parent groups need to account for recursion themselves.
* [Dev] Extended fields mechanism on top of django-jsonstore. * [Dev] Extended fields mechanism on top of django-jsonstore.
* Additional fields.
* Legacy pages are no longer themed.
* Batching of GraphQL queries.
`3.2.2`_ - 2025-01-18 `3.2.2`_ - 2025-01-18
--------------------- ---------------------
...@@ -1443,3 +1436,4 @@ Fixed ...@@ -1443,3 +1436,4 @@ Fixed
.. _3.2.0: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.0 .. _3.2.0: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.0
.. _3.2.1: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.1 .. _3.2.1: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.1
.. _3.2.2: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.2 .. _3.2.2: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.2
.. _4.0: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/4.0
...@@ -17,15 +17,19 @@ The AlekSIS core currently provides the following features: ...@@ -17,15 +17,19 @@ The AlekSIS core currently provides the following features:
* For users: * For users:
* Authentication via local account, LDAP, or social accounts * Authentication via local account, LDAP, or social accounts
* Two factor authentication via Yubikey, OTP or SMS * Two factor authentication via WebAuthn, OTP, or SMS
* Configurable dashboard with widgets * Configurable dashboard with widgets
* User-specific preferences * User-specific preferences
* Global search * Global search
* Manage announcements * Global calendar system
* Manage groups and types of groups * CalDAV and CardDAV support
* Manage roles and additional, informative fields per group * Manage personal events
* Manage persons * Manage persons
* Notifications via SMS, email or dashboard * Manage groups and group types
* Manage roles per group
* Manage announcements
* Manage holidays
* Notifications via SMS, email, or dashboard
* PWA with offline caching * PWA with offline caching
* User registration, password changes and password reset * User registration, password changes and password reset
* User invitations with invite codes and targeted invites * User invitations with invite codes and targeted invites
...@@ -45,15 +49,15 @@ The AlekSIS core currently provides the following features: ...@@ -45,15 +49,15 @@ The AlekSIS core currently provides the following features:
* For developers * For developers
* Generic PDF generation with chromium * Generic PDF generation with firefox
* Caching with Valkey * Caching with Valkey
* Django REST framework for apps to use at own discretion * Django REST framework for apps to use at own discretion
* Injection of fields, methods, permissions and properties via custom `ExtensibleModel` * Injection of fields, methods, permissions and properties via custom ``ExtensibleModel``
* K8s compatible, read-only Docker image * K8s compatible, read-only Docker image
* Object-level permissions and rules with `django-guardian` and `django-rules` * Object-level permissions and rules with ``django-guardian`` and ``django-rules``
* Query caching with `django-cachalot` * uWSGI and Celery via ``django-uwsgi`` in development
* uWSGI and Celery via `django-uwsgi` in development
* Extensible dashbaord widget system * Extensible dashbaord widget system
* Extensible calendar system
* Extensible OAuth/OpenID Connect scope and claims system * Extensible OAuth/OpenID Connect scope and claims system
Licence Licence
......
...@@ -75,8 +75,10 @@ ...@@ -75,8 +75,10 @@
"incompatible_selection_message": "Aktion wurde für eine inkompatible Auswahl aufgerufen." "incompatible_selection_message": "Aktion wurde für eine inkompatible Auswahl aufgerufen."
}, },
"actions": { "actions": {
"account_menu": "Kontomenü öffnen",
"back": "Zurück", "back": "Zurück",
"cancel": "Abbrechen", "cancel": "Abbrechen",
"clear": "Feld leeren",
"clear_filters": "Filter zurücksetzen", "clear_filters": "Filter zurücksetzen",
"close": "Schließen", "close": "Schließen",
"confirm": "Bestätigen", "confirm": "Bestätigen",
...@@ -89,13 +91,21 @@ ...@@ -89,13 +91,21 @@
"delete": "Löschen", "delete": "Löschen",
"edit": "Bearbeiten", "edit": "Bearbeiten",
"filter": "Filter", "filter": "Filter",
"list_notifications": "Liste der Benachrichtigungen öffnen",
"more_actions": "Mehr Aktionen",
"next": "Weiter", "next": "Weiter",
"open_details": "Details ansehen",
"open_in_new": "In neuem Tab öffnen",
"save": "Speichern", "save": "Speichern",
"scroll_next": "Zu nächsten scrollen",
"scroll_prev": "Zu vorherigem scrollen",
"search": "Suchen", "search": "Suchen",
"select_action": "Aktion auswählen", "select_action": "Aktion auswählen",
"select_all": "Alle auswählen", "select_all": "Alle auswählen",
"select_school_term": "Auswahl für aktives Schuljahr öffnen",
"stop_editing": "Bearbeiten beenden", "stop_editing": "Bearbeiten beenden",
"title": "Aktionen", "title": "Aktionen",
"toggle_sidenav": "Anzeige der Seitennavigation umschalten",
"type_to_search": "Tippen Sie, um zu suchen", "type_to_search": "Tippen Sie, um zu suchen",
"update": "Aktualisieren" "update": "Aktualisieren"
}, },
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
"name": "Nomen" "name": "Nomen"
} }
}, },
"people": "Personae",
"person": { "person": {
"birth_date": "Dies natalis", "birth_date": "Dies natalis",
"date_of_birth": "Dies natalis", "date_of_birth": "Dies natalis",
......
...@@ -25,13 +25,13 @@ django.setup() ...@@ -25,13 +25,13 @@ django.setup()
# -- Project information ----------------------------------------------------- # -- Project information -----------------------------------------------------
project = "AlekSIS-Core" project = "AlekSIS-Core"
copyright = "2019-2023 The AlekSIS team" copyright = "2019-2025 The AlekSIS team"
author = "The AlekSIS Team" author = "The AlekSIS Team"
# The short X.Y version # The short X.Y version
version = "4.0" version = "4.0"
# The full version, including alpha/beta/rc tags # The full version, including alpha/beta/rc tags
release = "4.0.0.dev4" release = "4.0.0"
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------
......
[tool.poetry] [tool.poetry]
name = "AlekSIS-Core" name = "AlekSIS-Core"
version = "4.0.0.dev16" version = "4.0.0"
packages = [ packages = [
{ include = "aleksis" } { include = "aleksis" }
] ]
......