diff --git a/aleksis/apps/paweljong/predicates.py b/aleksis/apps/paweljong/predicates.py index 2ce8686d2bcca3a1c908e265be3b9c45c0153458..1816f377c6605fc719dec4d98408e1120445bbc9 100644 --- a/aleksis/apps/paweljong/predicates.py +++ b/aleksis/apps/paweljong/predicates.py @@ -26,3 +26,8 @@ def is_own_registration(user: User, registration: EventRegistration) -> bool: def is_organiser(user: User, obj: EventRegistration) -> bool: """Predicate which checks if the user is an organiser.""" return user.person in obj.event.linked_group.owners.all() + +@predicate +def is_event_published(obj: EventRegistration) -> bool: + """Predicate which checks if the event is published.""" + return obj.published diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py index 7ad451f75bd2574625ce5ac89230b48ea72b8c3b..f9f69317bed46fef8cbc1039e33748d6f9f6948e 100644 --- a/aleksis/apps/paweljong/rules.py +++ b/aleksis/apps/paweljong/rules.py @@ -14,6 +14,7 @@ from .predicates import ( is_own_registration, is_own_voucher, is_organiser, + is_event_published, ) ## Vouchers @@ -59,6 +60,9 @@ change_event_predicate = has_person & ( ) rules.add_perm("paweljong.change_event_rule", change_event_predicate) +# View event +view_event_predicate = (is_event_published) +rules.add_perm("paweljong.view_event_rule", view_event_predicate) # Delete event delete_event_predicate = has_person & ( @@ -114,7 +118,7 @@ rules.add_perm("paweljong.view_terms_rule", view_terms_predicate) # View term view_term_predicate = has_person & ( - has_global_perm("paweljong.view_term") | has_object_perm("paweljong.view_term", Terms) + has_global_perm("paweljong.view_term") | has_object_perm("paweljong.view_term") ) rules.add_perm("paweljong.view_term_rule", view_term_predicate) @@ -149,7 +153,7 @@ rules.add_perm("paweljong.view_info_mailings_rule", view_info_mailings_predicate # View info_mailing view_info_mailing_predicate = has_person & ( - has_global_perm("paweljong.view_info_mailing") | has_object_perm("paweljong.view_info_mailing", Terms) + has_global_perm("paweljong.view_info_mailing") | has_object_perm("paweljong.view_info_mailing") ) rules.add_perm("paweljong.view_info_mailing_rule", view_info_mailing_predicate) diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index 6179f3d8cd262ad381000a2f27fb72ca278db699..806b313a36404d698a97dfb4c3e705c054b97784 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -685,12 +685,13 @@ class RegisterEventWizardView(SessionWizardView): return redirect("index") -class EventFullView(DetailView): +class EventFullView(PermissionRequiredMixin, DetailView): model = Event slug_field = "slug" template_name = "paweljong/event/full.html" object_context_name = "event" + permission_required = "paweljong.view_event_rule" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -700,12 +701,13 @@ class EventFullView(DetailView): return context -class RegisterEventStart(DetailView): +class RegisterEventStart(PermissionRequiredMixin, DetailView): model = Event slug_field = "slug" template_name = "paweljong/event/register_start.html" object_context_name = "event" + permission_required = "paweljong.view_event_rule" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs)