diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py index 63f2234c4c1edff3ee37ce157260e56bc9c75a32..7ad451f75bd2574625ce5ac89230b48ea72b8c3b 100644 --- a/aleksis/apps/paweljong/rules.py +++ b/aleksis/apps/paweljong/rules.py @@ -16,26 +16,33 @@ from .predicates import ( is_organiser, ) +## Vouchers + # View vouchers view_vouchers_predicate = has_person & ( has_global_perm("paweljong.view_voucher") | has_any_object("paweljong.view_voucher", Voucher) ) rules.add_perm("paweljong.view_vouchers_rule", view_vouchers_predicate) -# Edit vouchers -change_vouchers_predicate = has_person & ( - has_global_perm("paweljong.change_voucher") - | has_any_object("paweljong.change_voucher", Voucher) +# View voucher +view_voucher_predicate = has_person & ( + is_own_voucher | has_global_perm("paweljong.view_voucher") | has_object_perm("paweljong.view_voucher") ) -rules.add_perm("paweljong.change_vouchers_rule", change_vouchers_predicate) +rules.add_perm("paweljong.view_voucher_rule", view_voucher_predicate) +# Edit voucher +change_voucher_predicate = has_person & ( + has_global_perm("paweljong.change_voucher") + | has_object_perm("paweljong.change_voucher") +) +rules.add_perm("paweljong.change_voucher_rule", change_voucher_predicate) -# Delete vouchers -delete_vouchers_predicate = has_person & ( +# Delete voucher +delete_voucher_predicate = has_person & ( has_global_perm("paweljong.delete_voucher") - | has_any_object("paweljong.delete_voucher", Voucher) + | has_object_perm("paweljong.delete_voucher") ) -rules.add_perm("paweljong.delete_vouchers_rule", delete_vouchers_predicate) +rules.add_perm("paweljong.delete_voucher_rule", delete_voucher_predicate) # Create vouchers create_vouchers_predicate = has_person & ( @@ -44,18 +51,20 @@ create_vouchers_predicate = has_person & ( ) rules.add_perm("paweljong.create_vouchers_rule", create_vouchers_predicate) -# Edit events -change_events_predicate = has_person & ( - has_global_perm("paweljong.change_event") | has_any_object("paweljong.change_event", Event) +## Events + +# Edit event +change_event_predicate = has_person & ( + has_global_perm("paweljong.change_event") | has_object_perm("paweljong.change_event") ) -rules.add_perm("paweljong.change_events_rule", change_events_predicate) +rules.add_perm("paweljong.change_event_rule", change_event_predicate) -# Delete events -delete_events_predicate = has_person & ( - has_global_perm("paweljong.delete_event") | has_any_object("paweljong.delete_event", Event) +# Delete event +delete_event_predicate = has_person & ( + has_global_perm("paweljong.delete_event") | has_object_perm("paweljong.delete_event") ) -rules.add_perm("paweljong.delete_events_rule", delete_events_predicate) +rules.add_perm("paweljong.delete_event_rule", delete_event_predicate) # Create events create_events_predicate = has_person & ( @@ -63,33 +72,39 @@ create_events_predicate = has_person & ( ) rules.add_perm("paweljong.create_events_rule", create_events_predicate) -# Manage registrations -manage_registrations_predicate = has_person & ( - has_global_perm("paweljong.manage_registration") +## Registrations + +# View registration +view_registration_predicate = has_person & ( + has_global_perm("paweljong.view_eventregistration") + | has_object_perm("paweljong.view_eventregistration") | is_organiser | is_own_registration ) -rules.add_perm("paweljong.manage_registrations_rule", manage_registrations_predicate) +rules.add_perm("paweljong.view_registration_rule", view_registration_predicate) # View registrations view_registrations_predicate = has_person & ( has_global_perm("paweljong.view_eventregistration") - | has_any_object("paweljong.manage_registrations_rule", EventRegistration) + | has_any_object("paweljong.view_registration_rule", EventRegistration) ) rules.add_perm("paweljong.view_registrations_rule", view_registrations_predicate) -# Delete registrations -delete_registrations_predicate = has_person & ( +# Delete registration +delete_registration_predicate = has_person & ( has_global_perm("paweljong.delete_eventregistration") - | has_any_object("paweljong.delete_eventregistration", EventRegistration) + | has_object_perm("paweljong.delete_eventregistration") ) -rules.add_perm("paweljong.delete_registrations_rule", delete_registrations_predicate) +rules.add_perm("paweljong.delete_registration_rule", delete_registration_predicate) +# Change registration +change_registration_predicate = has_person & ( + has_global_perm("paweljong.change_eventregistration") + | has_object_perm("paweljong.change_eventregistration") +) +rules.add_perm("paweljong.change_registration_rule", change_registration_predicate) -# Is own voucher? -is_own_voucher_predicate = has_person & (is_own_voucher) -rules.add_perm("paweljong.is_own_voucher_rule", is_own_voucher_predicate) - +## Terms # View terms view_terms_predicate = has_person & ( @@ -97,6 +112,33 @@ view_terms_predicate = has_person & ( ) 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) +) +rules.add_perm("paweljong.view_term_rule", view_term_predicate) + +# Delete term +delete_term_predicate = has_person & ( + has_global_perm("paweljong.delete_eventterm") + | has_object_perm("paweljong.delete_eventterm") +) +rules.add_perm("paweljong.delete_term_rule", delete_term_predicate) + +# Change term +change_term_predicate = has_person & ( + has_global_perm("paweljong.change_eventterm") + | has_object_perm("paweljong.change_eventterm") +) +rules.add_perm("paweljong.change_term_rule", change_term_predicate) + +# Create terms +create_terms_predicate = has_person & ( + has_global_perm("paweljong.create_term") | has_any_object("paweljong.create_term", Event) +) +rules.add_perm("paweljong.create_terms_rule", create_terms_predicate) + +## Info mailings # View info_mailings view_info_mailings_predicate = has_person & ( @@ -105,6 +147,33 @@ view_info_mailings_predicate = has_person & ( ) 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) +) +rules.add_perm("paweljong.view_info_mailing_rule", view_info_mailing_predicate) + +# Delete info_mailing +delete_info_mailing_predicate = has_person & ( + has_global_perm("paweljong.delete_eventinfo_mailing") + | has_object_perm("paweljong.delete_eventinfo_mailing") +) +rules.add_perm("paweljong.delete_info_mailing_rule", delete_info_mailing_predicate) + +# Change info_mailing +change_info_mailing_predicate = has_person & ( + has_global_perm("paweljong.change_eventinfo_mailing") + | has_object_perm("paweljong.change_eventinfo_mailing") +) +rules.add_perm("paweljong.change_info_mailing_rule", change_info_mailing_predicate) + +# Create info_mailings +create_info_mailings_predicate = has_person & ( + has_global_perm("paweljong.create_info_mailing") | has_any_object("paweljong.create_info_mailing", Event) +) +rules.add_perm("paweljong.create_info_mailings_rule", create_info_mailings_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) diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index 2a3dba289b839fab805abba85aee826bdf47d605..6179f3d8cd262ad381000a2f27fb72ca278db699 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -57,7 +57,7 @@ User = get_user_model() class CreateEventView(PermissionRequiredMixin, AdvancedCreateView): form_class = EditEventForm model = Event - permission_required = "paweljong.change_event" + permission_required = "paweljong.create_events_rule" template_name = "paweljong/event/create.html" success_url = reverse_lazy("manage_events") success_message = _("The event has been saved.") @@ -68,14 +68,14 @@ class EditEventView(PermissionRequiredMixin, RevisionMixin, AdvancedEditView): form_class = EditEventForm model = Event slug_field = "slug" - permission_required = "paweljong.change_event" + permission_required = "paweljong.change_event_rule" context_object_name = "manage_events" template_name = "paweljong/event/edit.html" success_url = reverse_lazy("manage_events") success_message = _("The event has been saved.") -@permission_required("paweljong.change_events") +@permission_required("paweljong.view_events_rule") def manage_events(request: HttpRequest) -> HttpResponse: """List view listing all registrations.""" context = {} @@ -96,7 +96,7 @@ def manage_events(request: HttpRequest) -> HttpResponse: return render(request, "paweljong/event/manage.html", context) -@permission_required("paweljong.view_vouchers") +@permission_required("paweljong.view_vouchers_rule") def vouchers(request): context = {} @@ -115,7 +115,7 @@ def vouchers(request): return render(request, "paweljong/voucher/list.html", context) -@permission_required("paweljong.generate_lists") +@permission_required("paweljong.generate_lists_rule") def generate_lists(request: HttpRequest) -> HttpResponse: context = {} @@ -161,7 +161,7 @@ class EventRegistrationCreateView(PermissionRequiredMixin, AdvancedCreateView): model = EventRegistration form_class = EditEventRegistrationForm - permission_required = "paweljong.manage_registration" + permission_required = "paweljong.create_eventregistration_rule" template_name = "paweljong/event_registration/create.html" success_url = reverse_lazy("registrations") success_message = _("The event registration has been created.") @@ -173,14 +173,14 @@ class EventRegistrationEditView(PermissionRequiredMixin, AdvancedEditView): model = EventRegistration form_class = EditEventRegistrationForm - permission_required = "paweljong.manage_eventregistration" + permission_required = "paweljong.change_eventregistration_rule" template_name = "paweljong/event_registration/edit.html" success_url = reverse_lazy("registrations") success_message = _("The event registration has been saved.") @permission_required( - "paweljong.manage_registrations", + "paweljong.change_eventregistration_rule", fn=objectgetter_optional(EventRegistration, None, False), ) def edit_registration(request: HttpRequest, pk) -> HttpResponse: @@ -206,7 +206,7 @@ def edit_registration(request: HttpRequest, pk) -> HttpResponse: return render(request, "paweljong/event_registration/edit.html", context) -@permission_required("paweljong.is_own_voucher", fn=objectgetter_optional(Voucher, None, False)) +@permission_required("paweljong.view_voucher_rule", fn=objectgetter_optional(Voucher, None, False)) def print_voucher(request: HttpRequest, pk) -> HttpResponse: context = {} @@ -220,7 +220,7 @@ class EventRegistrationDetailView(PermissionRequiredMixin, DetailView): """Detail view for an application instance.""" context_object_name = "registration" - permission_required = "paweljong.manage_registrations_rule" + permission_required = "paweljong.view_registration_rule" template_name = "paweljong/event_registration/full.html" def get_queryset(self): @@ -231,7 +231,7 @@ class EventRegistrationDeleteView(PermissionRequiredMixin, AdvancedDeleteView): """Delete view for registrations.""" model = EventRegistration - permission_required = "paweljong.delete_eventregistration" + permission_required = "paweljong.delete_eventregistration_rule" template_name = "core/pages/delete.html" success_url = reverse_lazy("registrations") success_message = _("The registration has been deleted.") @@ -243,7 +243,7 @@ class VoucherCreateView(PermissionRequiredMixin, AdvancedCreateView): model = Voucher form_class = EditVoucherForm - permission_required = "paweljong.add_voucher" + permission_required = "paweljong.create_voucher_rule" template_name = "paweljong/voucher/create.html" success_url = reverse_lazy("vouchers") success_message = _("The voucher has been created.") @@ -255,7 +255,7 @@ class VoucherEditView(PermissionRequiredMixin, AdvancedEditView): model = Voucher form_class = EditVoucherForm - permission_required = "paweljong.edit_voucher" + permission_required = "paweljong.change_voucher_rule" template_name = "paweljong/voucher/edit.html" success_url = reverse_lazy("vouchers") success_message = _("The voucher has been saved.") @@ -265,7 +265,7 @@ class VoucherDeleteView(PermissionRequiredMixin, AdvancedDeleteView): """Delete view for vouchers.""" model = Voucher - permission_required = "paweljong.delete_voucher" + permission_required = "paweljong.delete_voucher_rule" template_name = "core/pages/delete.html" success_url = reverse_lazy("vouchers") success_message = _("The voucher has been deleted.") @@ -719,7 +719,7 @@ class TermListView(PermissionRequiredMixin, SingleTableView): model = Terms table_class = TermsTable - permission_required = "paweljong.view_terms" + permission_required = "paweljong.view_terms_rule" template_name = "paweljong/term/list.html" @@ -729,7 +729,7 @@ class TermCreateView(PermissionRequiredMixin, AdvancedCreateView): model = Terms form_class = EditTermForm - permission_required = "paweljong.add_terms" + permission_required = "paweljong.create_terms_rule" template_name = "paweljong/term/create.html" success_url = reverse_lazy("terms") success_message = _("The term has been created.") @@ -741,7 +741,7 @@ class TermEditView(PermissionRequiredMixin, AdvancedEditView): model = Terms form_class = EditTermForm - permission_required = "paweljong.edit_terms" + permission_required = "paweljong.change_terms_rule" template_name = "paweljong/term/edit.html" success_url = reverse_lazy("terms") success_message = _("The term has been saved.") @@ -788,7 +788,7 @@ class InfoMailingListView(PermissionRequiredMixin, SingleTableView): model = InfoMailing table_class = InfoMailingsTable - permission_required = "paweljong.view_info_mailing" + permission_required = "paweljong.view_info_mailings_rule" template_name = "paweljong/info_mailing/list.html" @@ -798,7 +798,7 @@ class InfoMailingCreateView(PermissionRequiredMixin, AdvancedCreateView): model = InfoMailing form_class = EditInfoMailingForm - permission_required = "paweljong.add_info_mailing" + permission_required = "paweljong.create_info_mailing_rule" template_name = "paweljong/info_mailing/create.html" success_url = reverse_lazy("info_mailings") success_message = _("The info mailing has been created.") @@ -810,7 +810,7 @@ class InfoMailingEditView(PermissionRequiredMixin, AdvancedEditView): model = InfoMailing form_class = EditInfoMailingForm - permission_required = "paweljong.edit_info_mailing" + permission_required = "paweljong.change_info_mailing_rule" template_name = "paweljong/info_mailing/edit.html" success_url = reverse_lazy("info_mailings") success_message = _("The info mailing has been saved.") @@ -820,7 +820,7 @@ class InfoMailingDeleteView(PermissionRequiredMixin, AdvancedDeleteView): """Delete view for info mailings.""" model = InfoMailing - permission_required = "paweljong.delete_info_mailing" + permission_required = "paweljong.delete_info_mailing_rule" template_name = "core/pages/delete.html" success_url = reverse_lazy("info_mailings") success_message = _("The info mailing has been deleted.") @@ -829,7 +829,7 @@ class InfoMailingDeleteView(PermissionRequiredMixin, AdvancedDeleteView): class SendMailFromRegistration(PermissionRequiredMixin, FormView): template_name = "paweljong/event_registration/notification.html" - permission_required = "paweljong.send_notification_mail" + permission_required = "paweljong.send_notification_mail_rule" form_class = RegistrationNotificationForm success_url = reverse_lazy("registrations") @@ -870,7 +870,7 @@ class RegistrationStateListView(PermissionRequiredMixin, SingleTableView): model = RegistrationState table_class = RegistrationStatesTable - permission_required = "paweljong.view_registration_states" + permission_required = "paweljong.view_registration_states_rule" template_name = "paweljong/registration_state/list.html" @@ -880,7 +880,7 @@ class RegistrationStateCreateView(PermissionRequiredMixin, AdvancedCreateView): model = RegistrationState form_class = RegistrationStatesForm - permission_required = "paweljong.add_registration_states" + permission_required = "paweljong.create_registration_states_rule" template_name = "paweljong/registration_state/create.html" success_url = reverse_lazy("registration_states") success_message = _("The term has been created.") @@ -892,7 +892,7 @@ class RegistrationStateEditView(PermissionRequiredMixin, AdvancedEditView): model = RegistrationState form_class = RegistrationStatesForm - permission_required = "paweljong.edit_registration_states" + permission_required = "paweljong.change_registration_states_rule" template_name = "paweljong/registration_state/edit.html" success_url = reverse_lazy("registration_states") success_message = _("The term has been saved.")