diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py index 98cdcc7104271ed1ee9d5e8a8313cd87cee57bc8..6ebcb2ae2ecae7f796c67a00c36dd6e0aafcceba 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 4037bb6dfddfca30cfcd60432a919621e9d084f4..836e0aaf7d633fe25647ce2a5282228bbfc47433 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") )