Skip to content
Snippets Groups Projects

Resolve "Add payment processing UI"

Merged Tom Teichler requested to merge 3-add-payment-processing-ui-2 into payment-backends
1 file
+ 20
14
Compare changes
  • Side-by-side
  • Inline
+ 22
15
@@ -21,11 +21,11 @@ from .models.invoice import Invoice, InvoiceGroup
class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView):
permission_required = "tezor.can_print_invoice"
permission_required = "tezor.print_invoice_rule"
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
@@ -33,23 +33,29 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView):
return context
def do_payment(request, token):
payment = get_object_or_404(get_payment_model(), token=token)
class DoPaymentView(PermissionRequiredMixin, View):
if payment.status not in [PaymentStatus.WAITING, PaymentStatus.INPUT, PaymentStatus.REJECTED]:
return redirect(payment.get_success_url())
model = Invoice
permission_required = "tezor.do_payment_rule"
template_name = "tezor/invoice/payment.html"
def dispatch(self, request, token):
self.object = get_object_or_404(self.model, token=token)
if self.object.status not in [PaymentStatus.WAITING, PaymentStatus.INPUT, PaymentStatus.REJECTED]:
return redirect(self.object.get_success_url())
try:
form = payment.get_form(data=request.POST or None)
except RedirectNeeded as redirect_to:
return redirect(str(redirect_to))
try:
form = self.object.get_form(data=request.POST or None)
except RedirectNeeded as redirect_to:
return redirect(str(redirect_to))
context = {
"form": form,
"payment": payment,
}
context = {
"form": form,
"payment": self.object,
}
return render(request, "tezor/invoice/payment.html", context)
return render(request, self.template_name, context)
class ClientListView(PermissionRequiredMixin, SingleTableView):
@@ -171,5 +177,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"
Loading