diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py index 6bd88a65b36e353ddf8733186ffb163869d719bf..d73515bcc09e89d6bba788f3bd0913c7c4aa7dd1 100644 --- a/aleksis/apps/tezor/models/invoice.py +++ b/aleksis/apps/tezor/models/invoice.py @@ -80,7 +80,7 @@ class Invoice(BasePayment, PureDjangoModel): return TotalsTable(values) def get_success_url(self): - return reverse("payment_details", kwargs={"token": self.token}) + return reverse("invoice_by_pk", kwargs={"pk": self.pk}) def get_failure_url(self): - return reverse("payment_details", kwargs={"token": self.token}) + return reverse("invoice_by_pk", kwargs={"pk": self.pk}) diff --git a/aleksis/apps/tezor/urls.py b/aleksis/apps/tezor/urls.py index 1bc5fd9e76182749d12cda3ebe5b6b1b7cf66b9b..bea20f3c01b222d6d8bb9c1f0699e84011453553 100644 --- a/aleksis/apps/tezor/urls.py +++ b/aleksis/apps/tezor/urls.py @@ -5,7 +5,7 @@ from . import views urlpatterns = [ path("payments/", include("payments.urls")), path("invoice/<int:pk>/print", views.GetInvoicePDF.as_view(), name="get_invoice_by_pk"), - path("invoice/<str:token>/payment", views.payment_details, name="payment_details"), + path("invoice/<str:token>/payment", views.do_payment, name="do_payment"), path( "clients/list", views.ClientListView.as_view(), diff --git a/aleksis/apps/tezor/views.py b/aleksis/apps/tezor/views.py index e51b67402046ebbb136fe94f110aee538a574722..ee4df3c658f103eb7e6415c95ae8e9e8389eac2d 100644 --- a/aleksis/apps/tezor/views.py +++ b/aleksis/apps/tezor/views.py @@ -6,7 +6,7 @@ from django.urls import reverse, reverse_lazy from django.utils.decorators import method_decorator from django.utils.translation import ugettext as _ -from payments import get_payment_model, RedirectNeeded +from payments import get_payment_model, PaymentStatus, RedirectNeeded from rules.contrib.views import PermissionRequiredMixin from django_tables2.views import SingleTableView, RequestConfig @@ -32,9 +32,13 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView): print(invoice.group.__dict__) return context -def payment_details(request, token): + +def do_payment(request, token): payment = get_object_or_404(get_payment_model(), token=token) + if payment.status not in [PaymentStatus.WAITING, PaymentStatus.INPUT, PaymentStatus.REJECTED]: + return redirect(payment.get_success_url()) + try: form = payment.get_form(data=request.POST or None) except RedirectNeeded as redirect_to: