diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py index 73d8879cf26c1f6e8281c41deaecced0d33a5547..08f185992830aad74934631674d1a55f4fff5977 100644 --- a/aleksis/apps/alsijil/rules.py +++ b/aleksis/apps/alsijil/rules.py @@ -21,6 +21,7 @@ from .util.predicates import ( is_person_group_owner, is_personal_note_lesson_parent_group_owner, is_personal_note_lesson_teacher, + is_teacher, ) # View lesson @@ -99,6 +100,7 @@ view_week_personal_notes_predicate = has_person & ( has_global_perm("alsijil.view_personalnote") | has_object_perm("core.view_personalnote_group") | is_group_owner + | (is_current_person & is_teacher) ) add_perm("alsijil.view_week_personalnote", view_week_personal_notes_predicate) diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index 3e62d17a2a3f338fa7c8f3a94dd8eb6c2a8fa821..f7f05ba2268182eb1989aa5c51fe8fe48c17d2c3 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -208,3 +208,9 @@ def has_any_object_absence(user: User) -> bool: member_of__in=get_objects_for_user(user, "core.register_absence_group", Group) ).exists(): return True + + +@predicate +def is_teacher(user: User, obj: Person) -> bool: + """Predicate which checks if the provided object is a teacher.""" + return user.person.is_teacher()