From 62f81689dc4be13610fbb6942a302da8aeaeca78 Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Fri, 11 Mar 2022 23:12:29 +0100 Subject: [PATCH] Add token instead of pk --- aleksis/apps/tezor/models/invoice.py | 4 ++-- aleksis/apps/tezor/rules.py | 5 ++++- aleksis/apps/tezor/tables.py | 6 +++--- aleksis/apps/tezor/urls.py | 6 +++--- aleksis/apps/tezor/views.py | 3 ++- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py index b7c1eb5..84b4413 100644 --- a/aleksis/apps/tezor/models/invoice.py +++ b/aleksis/apps/tezor/models/invoice.py @@ -88,7 +88,7 @@ class Invoice(BasePayment, PureDjangoModel): return TotalsTable(values) def get_success_url(self): - return reverse("invoice_by_pk", kwargs={"pk": self.pk}) + return reverse("invoice_by_token", kwargs={"token": self.token}) def get_failure_url(self): - return reverse("invoice_by_pk", kwargs={"pk": self.pk}) + return reverse("invoice_by_token", kwargs={"token": self.token}) diff --git a/aleksis/apps/tezor/rules.py b/aleksis/apps/tezor/rules.py index b82cc5b..12a27e3 100644 --- a/aleksis/apps/tezor/rules.py +++ b/aleksis/apps/tezor/rules.py @@ -84,5 +84,8 @@ do_payment_predicate = has_person & (is_in_payment_status(PaymentStatus.WAITING) rules.add_perm("tezor.do_payment", do_payment_predicate) # View invoice -view_invoice_predicate = is_own_invoice | is_site_preference_set("payments", "public_payments") | has_global_perm("tezor.view_invoice") | has_object_perm("tezor.view_invoice") +view_invoice_predicate = has_person & is_own_invoice | is_site_preference_set("payments", "public_payments") | has_global_perm("tezor.view_invoice") | has_object_perm("tezor.view_invoice") rules.add_perm("tezor.view_invoice_rule", view_invoice_predicate) + +print_invoice_predicate = (view_invoice_predicate & display_billing_predicate & display_purchased_items_predicate) +rules.add_perm("tezor.print_invoice_rule", print_invoice_predicate) diff --git a/aleksis/apps/tezor/tables.py b/aleksis/apps/tezor/tables.py index 1139c5e..32e2e3f 100644 --- a/aleksis/apps/tezor/tables.py +++ b/aleksis/apps/tezor/tables.py @@ -92,14 +92,14 @@ class InvoicesTable(tables.Table): billing_last_name = tables.Column() total = tables.Column() view = tables.LinkColumn( - "invoice_by_pk", - args=[A("id")], + "invoice_by_token", + args=[A("token")], verbose_name=_("View"), text=_("View"), ) print = tables.LinkColumn( "print_invoice", - args=[A("id")], + args=[A("token")], verbose_name=_("Print"), text=_("Print"), ) diff --git a/aleksis/apps/tezor/urls.py b/aleksis/apps/tezor/urls.py index 5485688..73273fc 100644 --- a/aleksis/apps/tezor/urls.py +++ b/aleksis/apps/tezor/urls.py @@ -4,7 +4,7 @@ from . import views urlpatterns = [ path("payments/", include("payments.urls")), - path("invoice/<int:pk>/print/", views.GetInvoicePDF.as_view(), name="print_invoice"), + path("invoice/<str:token>/print/", views.GetInvoicePDF.as_view(), name="print_invoice"), path("invoice/<str:token>/pay", views.do_payment, name="do_payment"), path( "clients/", @@ -52,8 +52,8 @@ urlpatterns = [ name="delete_invoice_group_by_pk", ), path( - "invoice/<int:pk>/", + "invoice/<str:slug>/", views.InvoiceDetailView.as_view(), - name="invoice_by_pk", + name="invoice_by_token", ), ] diff --git a/aleksis/apps/tezor/views.py b/aleksis/apps/tezor/views.py index 27df0e2..9517888 100644 --- a/aleksis/apps/tezor/views.py +++ b/aleksis/apps/tezor/views.py @@ -25,7 +25,7 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView): def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) - invoice = Invoice.objects.get(id=self.kwargs["pk"]) + invoice = Invoice.objects.get(token=self.kwargs["token"]) self.template_name = invoice.group.template_name context["invoice"] = invoice @@ -171,5 +171,6 @@ class InvoiceGroupDeleteView(PermissionRequiredMixin, AdvancedDeleteView): class InvoiceDetailView(PermissionRequiredMixin, DetailView): model = Invoice + slug_field = "token" permission_required = "tezor.view_invoice_rule" template_name = "tezor/invoice/full.html" -- GitLab