From fe5e057685a57a5f7e7418e9ab40d44b08335c12 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Wed, 21 Oct 2020 17:01:14 +0200
Subject: [PATCH] Respect setting "view_own_personal_notes" on all places

---
 aleksis/apps/alsijil/rules.py           | 12 ++++++++----
 aleksis/apps/alsijil/util/predicates.py | 12 +++---------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 5e17f1cb7..3e4ccd461 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -5,6 +5,7 @@ from aleksis.core.util.predicates import (
     has_object_perm,
     has_person,
     is_current_person,
+    is_site_preference_set,
 )
 
 from .util.predicates import (
@@ -55,13 +56,15 @@ edit_lesson_personal_note_predicate = has_person & (
 )
 add_perm("alsijil.edit_lesson_personalnote", edit_lesson_personal_note_predicate)
 
-
 # View personal note
 view_personal_note_predicate = has_person & (
     has_global_perm("alsijil.view_personalnote")
     | has_personal_note_group_perm("core.view_personalnote_group")
     | is_personal_note_lesson_teacher
-    | is_own_personal_note
+    | (
+        is_own_personal_note
+        & is_site_preference_set("alsijil", "view_own_personal_notes")
+    )
     | is_personal_note_lesson_parent_group_owner
 )
 add_perm("alsijil.view_personalnote", view_personal_note_predicate)
@@ -148,7 +151,8 @@ add_perm("alsijil.view_my_groups", view_my_groups_predicate)
 
 # View person overview
 view_person_overview_predicate = has_person & (
-    is_current_person | is_person_group_owner
+    (is_current_person & is_site_preference_set("alsijil", "view_own_personal_notes"))
+    | is_person_group_owner
 )
 add_perm("alsijil.view_person_overview", view_person_overview_predicate)
 
@@ -161,7 +165,7 @@ view_person_overview_personal_notes_predicate = has_person & (
     has_global_perm("alsijil.view_personalnote")
     | has_person_group_object_perm("core.view_personalnote_group")
     | is_person_primary_group_owner
-    | is_current_person
+    | (is_current_person & is_site_preference_set("alsijil", "view_own_personal_notes"))
 )
 add_perm(
     "alsijil.view_person_overview_personalnote",
diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py
index b33a9e27e..3bd37b491 100644
--- a/aleksis/apps/alsijil/util/predicates.py
+++ b/aleksis/apps/alsijil/util/predicates.py
@@ -7,7 +7,6 @@ from rules import predicate
 
 from aleksis.apps.chronos.models import LessonPeriod
 from aleksis.core.models import Group, Person
-from aleksis.core.util.core_helpers import get_site_preferences
 from aleksis.core.util.predicates import check_object_permission
 
 from ..models import PersonalNote
@@ -166,15 +165,10 @@ def is_own_personal_note(user: User, obj: PersonalNote) -> bool:
     """Predicate for users referred to in a personal note
 
     Checks whether the user referred to in a PersonalNote is the active user.
-    Is configurable via dynamic preferences.
     """
-    if hasattr(obj, "person"):
-        if (
-            get_site_preferences()["alsijil__view_own_personal_notes"]
-            and obj.person is user.person
-        ):
-            return True
-        return False
+    if hasattr(obj, "person") and obj.person is user.person:
+        return True
+    return False
 
 
 @predicate
-- 
GitLab