From 8f13316806837caca1229bc907c3fdfb0a2076ce Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Thu, 11 Mar 2021 11:56:47 +0100 Subject: [PATCH] Add preference for allowing original teachers to edit their substituted lessons --- aleksis/apps/alsijil/preferences.py | 8 ++++++++ aleksis/apps/alsijil/rules.py | 14 +++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py index 98cdcc710..6ebcb2ae2 100644 --- a/aleksis/apps/alsijil/preferences.py +++ b/aleksis/apps/alsijil/preferences.py @@ -34,6 +34,14 @@ class RegisterAbsenceAsPrimaryGroupOwner(BooleanPreference): ) +@site_preferences_registry.register +class EditLessonDocumentationAsOriginalTeacher(BooleanPreference): + section = alsijil + name = "edit_lesson_documentation_as_original_teacher" + default = True + verbose_name = _("Allow original teachers to edit their lessons although they are substituted") + + @site_preferences_registry.register class CarryOverDataToNextPeriods(BooleanPreference): section = alsijil diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py index 4037bb6df..836e0aaf7 100644 --- a/aleksis/apps/alsijil/rules.py +++ b/aleksis/apps/alsijil/rules.py @@ -58,6 +58,10 @@ add_perm("alsijil.view_register_object_personalnote", view_lesson_personal_notes # Edit personal note edit_lesson_personal_note_predicate = view_lesson_personal_notes_predicate & ( is_lesson_teacher + | ( + is_lesson_original_teacher + & is_site_preference_set("alsijil", "edit_lesson_documentation_as_original_teacher") + ) | has_global_perm("alsijil.change_personalnote") | has_lesson_group_object_perm("core.edit_personalnote_group") ) @@ -76,7 +80,11 @@ add_perm("alsijil.view_personalnote", view_personal_note_predicate) # Edit personal note edit_personal_note_predicate = view_personal_note_predicate & ( - ~is_own_personal_note & ~is_personal_note_lesson_original_teacher + ~is_own_personal_note + & ~( + is_personal_note_lesson_original_teacher + or not is_site_preference_set("alsijil", "edit_lesson_documentation_as_original_teacher") + ) | has_global_perm("alsijil.view_personalnote") | has_personal_note_group_perm("core.edit_personalnote_group") ) @@ -89,6 +97,10 @@ add_perm("alsijil.view_lessondocumentation", view_lesson_documentation_predicate # Edit lesson documentation edit_lesson_documentation_predicate = view_register_object_predicate & ( is_lesson_teacher + | ( + is_lesson_original_teacher + & is_site_preference_set("alsijil", "edit_lesson_documentation_as_original_teacher") + ) | has_global_perm("alsijil.change_lessondocumentation") | has_lesson_group_object_perm("core.edit_lessondocumentation_group") ) -- GitLab