Source code for payments.admin_views

"""Admin views provided by the payments package"""
from django.contrib import messages
from django.contrib.admin.utils import model_ngettext
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.decorators import permission_required
from django.shortcuts import redirect
from django.utils.translation import gettext_lazy as _
from django.utils.decorators import method_decorator
from django.views import View

from payments import services
from .models import Payment


[docs]@method_decorator(staff_member_required, name="dispatch") @method_decorator( permission_required("payments.process_payments"), name="dispatch", ) class PaymentAdminView(View): """ View that processes a payment """
[docs] def post(self, request, *args, **kwargs): payment = Payment.objects.filter(pk=kwargs["pk"]) if not ("type" in request.POST): return redirect("admin:payments_payment_change", kwargs["pk"]) result = services.process_payment(payment, request.member, request.POST["type"]) if len(result) > 0: messages.success( request, _("Successfully processed %s.") % model_ngettext(payment, 1) ) else: messages.error( request, _("Could not process %s.") % model_ngettext(payment, 1) ) if "next" in request.POST: return redirect(request.POST["next"]) return redirect("admin:payments_payment_change", kwargs["pk"])