From 17c0cfb39556f894dc66509858025b6793a47f26 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 15 Jul 2019 10:27:57 +0200 Subject: [PATCH] Add signal: order_split --- doc/development/api/general.rst | 2 +- src/pretix/base/services/orders.py | 4 +++- src/pretix/base/signals.py | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/development/api/general.rst b/doc/development/api/general.rst index 6070f41d5e..9e744c0c60 100644 --- a/doc/development/api/general.rst +++ b/doc/development/api/general.rst @@ -20,7 +20,7 @@ Order events There are multiple signals that will be sent out in the ordering cycle: .. automodule:: pretix.base.signals - :members: validate_cart, validate_cart_addons, validate_order, order_fee_calculation, order_paid, order_placed, order_canceled, order_expired, order_modified, order_changed, order_approved, order_denied, order_fee_type_name, allow_ticket_download + :members: validate_cart, validate_cart_addons, validate_order, order_fee_calculation, order_paid, order_placed, order_canceled, order_expired, order_modified, order_changed, order_approved, order_denied, order_fee_type_name, allow_ticket_download, order_split Frontend -------- diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 5797aa5ee9..5e46c89ddf 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -49,7 +49,7 @@ from pretix.base.settings import PERSON_NAME_SCHEMES from pretix.base.signals import ( allow_ticket_download, order_approved, order_canceled, order_changed, order_denied, order_expired, order_fee_calculation, order_placed, - periodic_task, validate_order, + order_split, periodic_task, validate_order, ) from pretix.celery_app import app from pretix.helpers.models import modelcopy @@ -1457,6 +1457,8 @@ class OrderChangeManager: if split_order.total != Decimal('0.00') and self.order.invoices.filter(is_cancellation=False).last(): generate_invoice(split_order) + + order_split.send(sender=self.order.event, original=self.order, split_order=split_order) return split_order @cached_property diff --git a/src/pretix/base/signals.py b/src/pretix/base/signals.py index 4501d75604..ea2ff55080 100644 --- a/src/pretix/base/signals.py +++ b/src/pretix/base/signals.py @@ -556,3 +556,11 @@ into account. system really bad.** Also, keep in mind that your response is subject to caching and out-of-date quotas might be used for display (not for actual order processing). """ + +order_split = EventPluginSignal( + providing_args=["original", "split_order"] +) +""" +This signal is sent out when an order is split into two orders and allows you to copy related models +to the new order. You will be passed the old order as ``original`` and the new order as ``split_order``. +"""