diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py index b524f2c3bd30cb59f5b37f2309fabb2239184393..7e52d04e137f80870edae358a8ebb5ab663a9824 100644 --- a/aleksis/apps/paweljong/rules.py +++ b/aleksis/apps/paweljong/rules.py @@ -55,13 +55,21 @@ rules.add_perm("paweljong.create_vouchers_rule", create_vouchers_predicate) # View events view_events_predicate = has_person & ( - has_global_perm("paweljong.view_event") | has_any_object("paweljong.view_event", Event) + has_global_perm("paweljong.view_event") | has_any_object("paweljong.view_event_rule", Event) ) rules.add_perm("paweljong.view_events_rule", view_events_predicate) +# Edit events +change_events_predicate = has_person & ( + has_global_perm("paweljong.change_event") | has_any_object("paweljong.change_event_rule", Event) +) +rules.add_perm("paweljong.change_events_rule", change_events_predicate) + # Edit event change_event_predicate = has_person & ( - has_global_perm("paweljong.change_event") | has_object_perm("paweljong.change_event") + has_global_perm("paweljong.change_event") + | has_object_perm("paweljong.change_event") + | is_organiser ) rules.add_perm("paweljong.change_event_rule", change_event_predicate) diff --git a/aleksis/apps/paweljong/templates/paweljong/event/detail.html b/aleksis/apps/paweljong/templates/paweljong/event/detail.html index 3ea38a295f1bf9183278f6934c5758fd4d62b495..c681c5e6efa58776eaab9ac4bd1117e5258fa243 100644 --- a/aleksis/apps/paweljong/templates/paweljong/event/detail.html +++ b/aleksis/apps/paweljong/templates/paweljong/event/detail.html @@ -14,26 +14,23 @@ {% block content %} <h4>{{ event }}</h4> - {% has_perm 'paweljong.manage_event' user event as can_manage_event %} - {% has_perm 'paweljong.event_checkpoint' user event as can_checkpoint %} + {% has_perm 'paweljong.change_event_rule' user event as can_change_event_rule %} + {% has_perm 'paweljong.event_checkpoint' user event as can_checkpoint_rule %} - {% if can_manage_event %} <p> - {% if can_manage_event %} - <a href="{% url 'edit_event_by_slug' event.slug %}" class="btn waves-effect waves-light"> - <i class="material-icons left iconify" data-icon="mdi:edit"></i> - {% trans "Edit" %} - </a> - {% endif %} - {% if can_checkpoint %} - <a href="{% url 'event_by_name_checkpoint' event.slug %}" class="btn waves-effect waves-light"> - <i class="material-icons left iconify" data-icon="mdi:access-point-check"></i> - {% trans "Checkpoint" %} - </a> - {% endif %} - + {% if can_change_event_rule %} + <a href="{% url 'edit_event_by_slug' event.slug %}" class="btn waves-effect waves-light"> + <i class="material-icons left iconify" data-icon="mdi:edit"></i> + {% trans "Edit" %} + </a> + {% endif %} + {% if can_checkpoint %} + <a href="{% url 'event_by_name_checkpoint' event.slug %}" class="btn waves-effect waves-light"> + <i class="material-icons left iconify" data-icon="mdi:access-point-check"></i> + {% trans "Checkpoint" %} + </a> + {% endif %} </p> - {% endif %} <div class="card"> <div class="card-content"> diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index 203bcf43ea9c0324f6d6c61030b415d6a902b771..23a067b5079395d00bd53b1e3d4c2815d34aac1f 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -146,7 +146,7 @@ class EventRegistrationCreateView(PermissionRequiredMixin, AdvancedCreateView): model = EventRegistration form_class = EditEventRegistrationForm - permission_required = "paweljong.create_eventregistration_rule" + permission_required = "paweljong.create_registration_rule" template_name = "paweljong/event_registration/create.html" success_url = reverse_lazy("registrations") success_message = _("The event registration has been created.") @@ -158,14 +158,14 @@ class EventRegistrationEditView(PermissionRequiredMixin, AdvancedEditView): model = EventRegistration form_class = EditEventRegistrationForm - permission_required = "paweljong.change_eventregistration_rule" + permission_required = "paweljong.change_registration_rule" template_name = "paweljong/event_registration/edit.html" success_url = reverse_lazy("registrations") success_message = _("The event registration has been saved.") @permission_required( - "paweljong.change_eventregistration_rule", + "paweljong.change_registration_rule", fn=objectgetter_optional(EventRegistration, None, False), ) def edit_registration(request: HttpRequest, pk) -> HttpResponse: @@ -896,8 +896,11 @@ class RetractRegistration(PermissionRequiredMixin, View): permission_required = "paweljong.can_retract_registration_rule" + def get_object(self, *args, **kwargs): + return EventRegistration.objects.get(id=self.kwargs["pk"]) + def get(self, *args, **kwargs): - registration = EventRegistration.objects.get(id=self.kwargs["pk"]) + registration = self.get_object() registration.retract() messages.success(self.request, _("Registration successfully retracted.")) @@ -1018,8 +1021,11 @@ class CheckInRegistration(PermissionRequiredMixin, View): permission_required = "paweljong.change_registration_rule" + def get_object(self, *args, **kwargs): + return EventRegistration.objects.get(id=self.kwargs["pk"]) + def get(self, *args, **kwargs): - registration = EventRegistration.objects.get(id=self.kwargs["pk"]) + registration = self.get_object() try: registration.mark_checked_in() diff --git a/pyproject.toml b/pyproject.toml index 9a30d4f5ba9932ee0272e4845dc785a35e5fbca6..d135e5bc70036f8ccad271d9df385c398bc5e01f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "AlekSIS-App-Paweljong" -version = "1.7.1" +version = "1.8" packages = [ { include = "aleksis" } ]