symposion_app/pinaxcon/registrasion/views.py
Sachi King 85ee108a1f Use full imports not .
And tox to py3.6
2017-04-29 14:28:48 +10:00

43 lines
1.3 KiB
Python

from django.contrib import messages
from django.core.exceptions import ValidationError
from django.http import Http404
from django.shortcuts import get_object_or_404
from django.shortcuts import redirect
from registrasion import models as rego
from registrasion.controllers.invoice import InvoiceController
from pinaxcon.registrasion import models
def demopay(request, invoice_id, access_code):
''' Marks the invoice with the given invoice id as paid.
'''
invoice_id = int(invoice_id)
inv = get_object_or_404(rego.Invoice.objects, pk=invoice_id)
invoice = InvoiceController(inv)
if not invoice.can_view(user=request.user, access_code=access_code):
raise Http404()
to_invoice = redirect("invoice", invoice.invoice.id, access_code)
try:
invoice.validate_allowed_to_pay() # Verify that we're allowed to do this.
except ValidationError as ve:
messages.error(request, ve.message)
return to_invoice
# Create the payment object
models.DemoPayment.objects.create(
invoice=invoice.invoice,
reference="Demo payment by user: " + request.user.username,
amount=invoice.invoice.value,
)
invoice.update_status()
messages.success(request, "This invoice was successfully paid.")
return to_invoice