diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index a9074f7c1c..22f5909ffe 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -6,6 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from pretix.base.models import Order, OrderPosition, Quota from pretix.base.services.mail import mail +from pretix.base.signals import order_paid, order_placed from pretix.helpers.urls import build_absolute_uri @@ -37,6 +38,7 @@ def mark_order_paid(order, provider=None, info=None, date=None, manual=None, for order.payment_manual = manual order.status = Order.STATUS_PAID order.save() + order_paid.send(order.event, order=order) if quotas_locked: for quota in quotas_locked: @@ -179,4 +181,5 @@ def place_order(event, user, positions, dt, payment_provider): payment_provider=payment_provider.identifier, ) OrderPosition.transform_cart_positions(positions, order) + order_placed.send(event, order=order) return order diff --git a/src/pretix/base/signals.py b/src/pretix/base/signals.py index 57c2df10cc..2af0e78480 100644 --- a/src/pretix/base/signals.py +++ b/src/pretix/base/signals.py @@ -77,3 +77,19 @@ subclass of pretix.base.exporter.BaseExporter register_data_exporters = EventPluginSignal( providing_args=[] ) + +""" +This signal is sent out every time an order is placed. The order object is given +as the first argument. +""" +order_placed = EventPluginSignal( + providing_args=["order"] +) + +""" +This signal is sent out every time an order is paid. The order object is given +as the first argument. +""" +order_paid = EventPluginSignal( + providing_args=["order"] +)