From 1085f5f99688463ff010e374256cf3f66110b01a Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Thu, 10 Mar 2022 22:51:19 +0100 Subject: [PATCH] Add rules --- aleksis/apps/tezor/rules.py | 76 +++++++++++++++++++++++++++++++++++++ aleksis/apps/tezor/views.py | 20 +++++----- 2 files changed, 86 insertions(+), 10 deletions(-) create mode 100644 aleksis/apps/tezor/rules.py diff --git a/aleksis/apps/tezor/rules.py b/aleksis/apps/tezor/rules.py new file mode 100644 index 0000000..ebf8fd7 --- /dev/null +++ b/aleksis/apps/tezor/rules.py @@ -0,0 +1,76 @@ +import rules + +from .models.base import Client +from .models.invoice import Invoice, InvoiceGroup + +# View clients +view_clients_predicate = has_person & ( + has_global_perm("tezor.view_client") | has_any_object("tezor.view_client", Client) +) +rules.add_perm("tezor.view_clients_rule", view_clients_predicate) + +# Edit clients +edit_clients_predicate = has_person & ( + has_global_perm("tezor.edit_client") | has_any_object("tezor.edit_client", Client) +) +rules.add_perm("tezor.edit_clients_rule", edit_clients_predicate) + +# Create clients +create_clients_predicate = has_person & ( + has_global_perm("tezor.create_client") | has_any_object("tezor.create_client", Client) +) +rules.add_perm("tezor.create_clients_rule", create_clients_predicate) + +# Delete clients +delete_clients_predicate = has_person & ( + has_global_perm("tezor.delete_client") | has_any_object("tezor.delete_client", Client) +) +rules.add_perm("tezor.delete_clients_rule", delete_clients_predicate) + +# View invoice groups +view_invoice_groups_predicate = has_person & ( + has_global_perm("tezor.view_invoice_group") | has_any_object("tezor.view_invoice_group", InvoiceGroup) +) +rules.add_perm("tezor.view_invoice_groups_rule", view_invoice_groups_predicate) + +# Edit invoice groups +edit_invoice_groups_predicate = has_person & ( + has_global_perm("tezor.edit_invoice_group") | has_any_object("tezor.edit_invoice_group", InvoiceGroup) +) +rules.add_perm("tezor.edit_invoice_groups_rule", edit_invoice_groups_predicate) + +# Create invoice groups +create_invoice_groups_predicate = has_person & ( + has_global_perm("tezor.create_invoice_group") | has_any_object("tezor.create_invoice_group", InvoiceGroup) +) +rules.add_perm("tezor.create_invoice_groups_rule", create_invoice_groups_predicate) + +# Delete invoice groups +delete_invoice_groups_predicate = has_person & ( + has_global_perm("tezor.delete_invoice_group") | has_any_object("tezor.delete_invoice_group", InvoiceGroup) +) +rules.add_perm("tezor.delete_invoice_groups_rule", delete_invoice_groups_predicate) + +# View invoices +view_invoices_predicate = has_person & ( + has_global_perm("tezor.view_invoice") | has_any_object("tezor.view_invoice", Invoice) +) +rules.add_perm("tezor.view_invoices_rule", view_invoices_predicate) + +# Edit invoices +edit_invoices_predicate = has_person & ( + has_global_perm("tezor.edit_invoice") | has_any_object("tezor.edit_invoice", Invoice) +) +rules.add_perm("tezor.edit_invoices_rule", edit_invoices_predicate) + +# Create invoices +create_invoices_predicate = has_person & ( + has_global_perm("tezor.create_invoice") | has_any_object("tezor.create_invoice", Invoice) +) +rules.add_perm("tezor.create_invoices_rule", create_invoices_predicate) + +# Delete invoices +delete_invoices_predicate = has_person & ( + has_global_perm("tezor.delete_invoice") | has_any_object("tezor.delete_invoice", Invoice) +) +rules.add_perm("tezor.delete_invoices_rule", delete_invoices_predicate) diff --git a/aleksis/apps/tezor/views.py b/aleksis/apps/tezor/views.py index 2793960..6e2d34c 100644 --- a/aleksis/apps/tezor/views.py +++ b/aleksis/apps/tezor/views.py @@ -37,7 +37,7 @@ class ClientListView(PermissionRequiredMixin, SingleTableView): model = Client table_class = ClientsTable - permission_required = "tezor.view_clients" + permission_required = "tezor.view_clients_rule" template_name = "tezor/client/list.html" @@ -47,7 +47,7 @@ class ClientCreateView(PermissionRequiredMixin, AdvancedCreateView): model = Client form_class = EditClientForm - permission_required = "tezor.add_clients" + permission_required = "tezor.create_clients_rule" template_name = "tezor/client/create.html" success_url = reverse_lazy("clients") success_message = _("The client has been created.") @@ -59,7 +59,7 @@ class ClientEditView(PermissionRequiredMixin, AdvancedEditView): model = Client form_class = EditClientForm - permission_required = "tezor.edit_clients" + permission_required = "tezor.edit_clients_rule" template_name = "tezor/client/edit.html" success_url = reverse_lazy("clients") success_message = _("The client has been saved.") @@ -69,7 +69,7 @@ class ClientDeleteView(PermissionRequiredMixin, AdvancedDeleteView): """Delete view for client.""" model = Client - permission_required = "tezor.delete_client" + permission_required = "tezor.delete_clients_rule" template_name = "core/pages/delete.html" success_url = reverse_lazy("clients") success_message = _("The client has been deleted.") @@ -78,7 +78,7 @@ class ClientDeleteView(PermissionRequiredMixin, AdvancedDeleteView): class ClientDetailView(PermissionRequiredMixin, DetailView): model = Client - permission_required = "tezor.view_client" + permission_required = "tezor.view_clients_rule" template_name = "tezor/client/full.html" def get_context_data(self, object): @@ -94,7 +94,7 @@ class ClientDetailView(PermissionRequiredMixin, DetailView): class InvoiceGroupDetailView(PermissionRequiredMixin, DetailView): model = InvoiceGroup - permission_required = "tezor.view_invoice_group" + permission_required = "tezor.view_invoice_groups_rule" template_name = "tezor/invoice_group/full.html" def get_context_data(self, object): @@ -114,7 +114,7 @@ class InvoiceGroupCreateView(PermissionRequiredMixin, AdvancedCreateView): model = InvoiceGroup form_class = EditInvoiceGroupForm - permission_required = "tezor.add_invoice_groups" + permission_required = "tezor.create_invoice_groups_rule" template_name = "tezor/invoice_group/create.html" success_url = reverse_lazy("clients") success_message = _("The invoice_group has been created.") @@ -132,7 +132,7 @@ class InvoiceGroupEditView(PermissionRequiredMixin, AdvancedEditView): model = InvoiceGroup form_class = EditInvoiceGroupForm - permission_required = "tezor.edit_invoice_groups" + permission_required = "tezor.edit_invoice_groups_rule" template_name = "tezor/invoice_group/edit.html" success_url = reverse_lazy("invoice_groups") success_message = _("The invoice_group has been saved.") @@ -142,7 +142,7 @@ class InvoiceGroupDeleteView(PermissionRequiredMixin, AdvancedDeleteView): """Delete view for invoice_group.""" model = InvoiceGroup - permission_required = "tezor.delete_invoice_group" + permission_required = "tezor.delete_invoice_groups_rule" template_name = "core/pages/delete.html" success_url = reverse_lazy("invoice_groups") success_message = _("The invoice_group has been deleted.") @@ -151,5 +151,5 @@ class InvoiceGroupDeleteView(PermissionRequiredMixin, AdvancedDeleteView): class InvoiceDetailView(PermissionRequiredMixin, DetailView): model = Invoice - permission_required = "tezor.view_invoice" + permission_required = "tezor.view_invoices_rule" template_name = "tezor/invoice/full.html" -- GitLab