diff --git a/aleksis/apps/paweljong/menus.py b/aleksis/apps/paweljong/menus.py index 149cd54a637869ca14489f308f5caaf87ec7c370..7b4986e1df436fb432a009f88be260e749a90bc5 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 7288954a4858f7508debda30ea30e331a44fa86a..04165825993accd3bab49c52ef517a696aa094a9 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 056af3de4f17ea5c2fed2fce93b168a7c5fd8f74..d48d8290567a9213a1760d978e9f45983a7a0742 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) )