From f57c83f3aa4e9f3db3c1246894dd193f70efc128 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Wed, 21 Oct 2020 17:06:59 +0200
Subject: [PATCH] Make configurable if primary group owners can register
 absences for their groups

---
 aleksis/apps/alsijil/preferences.py | 10 ++++++++++
 aleksis/apps/alsijil/rules.py       |  5 ++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index 9958d72d8..d5552c5e0 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -24,6 +24,16 @@ class ViewOwnPersonalNotes(BooleanPreference):
     verbose_name = _("Allow users to view their own personal notes")
 
 
+@site_preferences_registry.register
+class RegisterAbsenceAsPrimaryGroupOwner(BooleanPreference):
+    section = alsijil
+    name = "register_absence_as_primary_group_owner"
+    default = True
+    verbose_name = _(
+        "Allow primary group owners to register future absences for students in their groups"
+    )
+
+
 @site_preferences_registry.register
 class CarryOverDataToNextPeriods(BooleanPreference):
     section = alsijil
diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 3e4ccd461..0e30bebb5 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -129,7 +129,10 @@ register_absence_predicate = has_person & (
     has_global_perm("alsijil.register_absence")
     | has_person_group_object_perm("core.register_absence_group")
     | has_object_perm("core.register_absence_person")
-    | is_person_primary_group_owner
+    | (
+        is_person_primary_group_owner
+        & is_site_preference_set("alsijil", "register_absence_as_primary_group_owner")
+    )
 )
 add_perm("alsijil.register_absence", register_absence_predicate)
 
-- 
GitLab