From ea8ae583b625875f6e848ac86dbbbe78b99547eb Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Tue, 8 Mar 2022 15:50:41 +0100 Subject: [PATCH] Check if person is organiser --- aleksis/apps/paweljong/menus.py | 2 +- aleksis/apps/paweljong/predicates.py | 11 +++++++++++ aleksis/apps/paweljong/rules.py | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/paweljong/menus.py b/aleksis/apps/paweljong/menus.py index 149cd54..7b4986e 100644 --- a/aleksis/apps/paweljong/menus.py +++ b/aleksis/apps/paweljong/menus.py @@ -95,7 +95,7 @@ MENUS = { "validators": [ ( "aleksis.core.util.predicates.permission_validator", - "paweljong.view_registrations_rule", + "paweljong.manage_registrations", ) ], }, diff --git a/aleksis/apps/paweljong/predicates.py b/aleksis/apps/paweljong/predicates.py index 7288954..0416582 100644 --- a/aleksis/apps/paweljong/predicates.py +++ b/aleksis/apps/paweljong/predicates.py @@ -36,3 +36,14 @@ def is_own_voucher(user: User, voucher: Voucher) -> bool: def is_own_registration(user: User, registration: EventRegistration) -> bool: """Predicate which checks if the registration belongs to the user.""" return registration.person == user.person + + +@predicate +def is_organiser(user: User, registration: EventRegistration) -> bool: + """Predicate which checks if the registration belongs to the user.""" + return user.person in registration.event.owners.all() + +@predicate +def is_participant(user: User, registration: EventRegistration) -> bool: + """Predicate which checks if the registration belongs to the user.""" + return user.person in registration.event.members.all() diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py index 056af3d..d48d829 100644 --- a/aleksis/apps/paweljong/rules.py +++ b/aleksis/apps/paweljong/rules.py @@ -86,6 +86,7 @@ rules.add_perm("paweljong.view_registrations_rule", view_registrations_predicate # Manage registrations manage_registrations_predicate = has_person & ( has_global_perm("paweljong.manage_registration") + | is_organiser | is_own_registration | has_any_object("paweljong.manage_registration", EventRegistration) ) -- GitLab