Source code for debits.debits_test.callbacks
from debits.debits_base.models import AutomaticPayment
from debits.paypal.views import PayPalIPN
[docs]class MyPayPalIPN(PayPalIPN):
"""Mixin to handle purchase events.
Two subscription IPNs may call both :meth:`on_subscription_created` and :meth:`on_payment`.
It is not a problem (if not to count a tiny performance lag).
TODO: Generalize it for non PayPal processors."""
[docs] def on_subscription_created(self, POST, purchase):
self.do_purchase(purchase)
[docs] def on_payment(self, payment):
if isinstance(payment, AutomaticPayment):
purchase = payment.transaction.purchase
self.do_purchase(purchase)
[docs] def do_purchase(self, purchase):
"""Set the :class:`~debits.debits_test.models.MyPurchase` for an :class:`~debits.debits_test.models.Organization`."""
organization = purchase.subscriptionpurchase.mypurchase.for_organization
if organization is not None:
organization.purchase = purchase.subscriptionpurchase.mypurchase
organization.save()