From 727939e9d8629c3222c1fe8368b2711880a4d6ac Mon Sep 17 00:00:00 2001
From: Tom Teichler <tom.teichler@teckids.org>
Date: Fri, 11 Mar 2022 14:04:02 +0100
Subject: [PATCH] Add missing permissions for registration states

---
 aleksis/apps/paweljong/rules.py | 55 ++++++++++++++++++++++++++++-----
 1 file changed, 48 insertions(+), 7 deletions(-)

diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py
index f9f6931..f6e1a80 100644
--- a/aleksis/apps/paweljong/rules.py
+++ b/aleksis/apps/paweljong/rules.py
@@ -54,6 +54,12 @@ rules.add_perm("paweljong.create_vouchers_rule", create_vouchers_predicate)
 
 ## Events
 
+# View events
+view_events_predicate = has_person & (
+    has_global_perm("paweljong.view_event") | has_any_object("paweljong.view_event", Event)
+)
+rules.add_perm("paweljong.view_events_rule", view_events_predicate)
+
 # Edit event
 change_event_predicate = has_person & (
     has_global_perm("paweljong.change_event") | has_object_perm("paweljong.change_event")
@@ -61,7 +67,7 @@ change_event_predicate = has_person & (
 rules.add_perm("paweljong.change_event_rule", change_event_predicate)
 
 # View event
-view_event_predicate = (is_event_published)
+view_event_predicate = (is_event_published | (has_person & is_organiser) | has_object_perm("paweljong.view_event"))
 rules.add_perm("paweljong.view_event_rule", view_event_predicate)
 
 # Delete event
@@ -177,13 +183,48 @@ create_info_mailings_predicate = has_person & (
 )
 rules.add_perm("paweljong.create_info_mailings_rule", create_info_mailings_predicate)
 
+## Registration states
+
+# View registration_states
+view_registration_states_predicate = has_person & (
+    has_global_perm("paweljong.view_registration_state")
+    | has_any_object("paweljong.view_registration_state", Terms)
+)
+rules.add_perm("paweljong.view_registration_states_rule", view_registration_states_predicate)
+
+# View registration_state
+view_registration_state_predicate = has_person & (
+    has_global_perm("paweljong.view_registration_state") | has_object_perm("paweljong.view_registration_state")
+)
+rules.add_perm("paweljong.view_registration_state_rule", view_registration_state_predicate)
+
+# Delete registration_state
+delete_registration_state_predicate = has_person & (
+    has_global_perm("paweljong.delete_eventregistration_state")
+    | has_object_perm("paweljong.delete_eventregistration_state")
+)
+rules.add_perm("paweljong.delete_registration_state_rule", delete_registration_state_predicate)
+
+# Change registration_state
+change_registration_state_predicate = has_person & (
+    has_global_perm("paweljong.change_eventregistration_state")
+    | has_object_perm("paweljong.change_eventregistration_state")
+)
+rules.add_perm("paweljong.change_registration_state_rule", change_registration_state_predicate)
+
+# Create registration_states
+create_registration_states_predicate = has_person & (
+    has_global_perm("paweljong.create_registration_state") | has_any_object("paweljong.create_registration_state", Event)
+)
+rules.add_perm("paweljong.create_registration_states_rule", create_registration_states_predicate)
+
 # View menu
 can_view_menu_predicate = has_person & (
-    has_any_object("paweljong.manage_registrations_rule", EventRegistration)
-    | has_any_object("paweljong.view_info_mailing", InfoMailing)
-    | has_any_object("paweljong.view_terms", Terms)
-    | has_any_object("paweljong.view_voucher", Voucher)
-    | has_any_object("paweljong.view_event", Event)
-    | has_any_object("paweljong.view_registrationstate", RegistrationState)
+    view_registrations_predicate
+    | view_info_mailings_predicate
+    | view_terms_predicate
+    | view_vouchers_predicate
+    | view_events_predicate
+    | view_events_registration_states_predicate
 )
 rules.add_perm("paweljong.view_menu", can_view_menu_predicate)
-- 
GitLab