From 24f5150d3e6dce2b90d84ff0d39740c5ba2e8a90 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Fri, 30 Jul 2021 13:55:08 +0200
Subject: [PATCH] Fix rules in person overview for the lesson documentations
 and the personal notes editing tab

(cherry picked from commit e11bc50436febaa12019fa7c6e8984b18260787f)
---
 CHANGELOG.rst                 | 9 +++++++++
 aleksis/apps/alsijil/rules.py | 2 +-
 aleksis/apps/alsijil/views.py | 6 ++++--
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index ea7226c0d..056214ada 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,15 @@ All notable changes to this project will be documented in this file.
 The format is based on `Keep a Changelog`_,
 and this project adheres to `Semantic Versioning`_.
 
+Unreleased
+----------
+
+Fixed
+~~~~~
+
+* The lesson documentations tab was displayed on overviews for persons who are not teachers.
+* Teachers weren't able to edit personal notes of their students in the person overview.
+
 `2.0rc3`_ - 2021-07-20
 ----------------------
 
diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 0b418af8c..ea438b993 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -189,7 +189,7 @@ add_perm(
 )
 
 # Edit person overview personal notes
-edit_person_overview_personal_notes_predicate = view_person_overview_personal_notes_predicate & (
+edit_person_overview_personal_notes_predicate = view_person_overview_predicate & (
     ~is_current_person
     | has_global_perm("alsijil.edit_personalnote")
     | has_person_group_object_perm("core.edit_personalnote_group")
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 3999324f2..93d7cce2e 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -876,7 +876,9 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
     context["excuse_types"] = ExcuseType.objects.all()
 
     form = PersonOverviewForm(request, request.POST or None, queryset=allowed_personal_notes)
-    if request.method == "POST":
+    if request.method == "POST" and request.user.has_perm(
+        "alsijil.edit_person_overview_personalnote_rule", person
+    ):
         if form.is_valid():
             with reversion.create_revision():
                 reversion.set_user(request.user)
@@ -957,7 +959,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
     filter_dict["person"] = person
     context["filter_form"] = filter_form
 
-    if request.user.person.is_teacher:
+    if person.is_teacher:
         register_objects = generate_list_of_all_register_objects(filter_dict)
         table = RegisterObjectTable(register_objects)
         items_per_page = request.user.person.preferences[
-- 
GitLab