From d397e1ba72969ec9f07866da4f22d958b2c21abd Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Wed, 10 Mar 2021 11:57:50 +0100
Subject: [PATCH] Split up view permissions for group roles to use them with
 different models

---
 aleksis/apps/alsijil/rules.py | 12 +++++++++---
 aleksis/apps/alsijil/views.py |  4 +++-
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index f36db7aa5..ad4536adc 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -241,13 +241,19 @@ add_perm("alsijil.delete_grouprole", delete_group_role_predicate)
 
 view_assigned_group_roles_predicate = (
     is_group_owner
-    | is_lesson_teacher
-    | is_lesson_parent_group_owner
     | has_global_perm("alsjil.assign_grouprole")
-    | has_object_perm("alsijil.assign_grouprole")
+    | has_object_perm("core.assign_grouprole")
 )
 add_perm("alsijil.view_assigned_grouproles", view_assigned_group_roles_predicate)
 
+view_assigned_group_roles_register_object_predicate = (
+    is_lesson_teacher | is_lesson_parent_group_owner | has_global_perm("alsjil.assign_grouprole")
+)
+add_perm(
+    "alsijil.view_assigned_grouproles_for_register_object",
+    view_assigned_group_roles_register_object_predicate,
+)
+
 assign_group_role_person_predicate = is_person_group_owner | has_global_perm(
     "alsjil.assign_grouprole"
 )
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 75c07ebec..f3990be4f 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -167,7 +167,9 @@ def register_object(
         # Group roles
         show_group_roles = request.user.person.preferences[
             "alsijil__group_roles_in_lesson_view"
-        ] and request.user.has_perm("alsijil.view_assigned_grouproles", register_object)
+        ] and request.user.has_perm(
+            "alsijil.view_assigned_grouproles_for_register_object", register_object
+        )
         if show_group_roles:
             groups = register_object.get_groups().all()
             group_roles = GroupRole.objects.with_assignments(date_of_lesson, groups)
-- 
GitLab