Source code for payments.widgets
"""Widgets provided by the payments package."""
from django.contrib.contenttypes.models import ContentType
from django.forms import Widget
from payments.models import Payment, PaymentUser
[docs]class PaymentWidget(Widget):
"""Custom widget for the Payment object, used in registrations."""
template_name = "payments/widgets/payment.html"
def __init__(self, attrs=None, obj=None):
super().__init__(attrs)
self.obj = obj
[docs] def get_context(self, name, value, attrs) -> dict:
context = super().get_context(name, value, attrs)
if self.obj and not value:
context["obj"] = self.obj
context["payable_payer"] = (
PaymentUser.objects.get(pk=self.obj.payment_payer.pk)
if getattr(self.obj, "payment_payer", None) is not None
else None
)
context["content_type"] = ContentType.objects.get_for_model(self.obj)
elif value:
payment = Payment.objects.get(pk=value)
context["url"] = payment.get_admin_url()
context["payment"] = payment
return context