From 99346f3ccf8662f977371ed2daf6d67ff59bf5ec Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Thu, 10 Mar 2022 11:48:58 +0100
Subject: [PATCH] Separate payment details and do payments view

---
 aleksis/apps/tezor/models/invoice.py | 4 ++--
 aleksis/apps/tezor/urls.py           | 2 +-
 aleksis/apps/tezor/views.py          | 8 ++++++--
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py
index 6bd88a6..d73515b 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 1bc5fd9..bea20f3 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 e51b674..ee4df3c 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:
-- 
GitLab