From 32ad8b40c910fd6877c1681e1894a6dd4ecee62f Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Thu, 20 Aug 2020 16:50:42 +0200
Subject: [PATCH] Fix view_week_personalnote

---
 aleksis/apps/alsijil/rules.py           | 2 ++
 aleksis/apps/alsijil/util/predicates.py | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 73d8879cf..08f185992 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 3e62d17a2..f7f05ba22 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()
-- 
GitLab