From 083e5ed265e7273fbbe3d0fe72064ae7fbcd556f Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Tue, 25 Feb 2025 13:38:26 +0100 Subject: [PATCH] New Signal: order_expiry_changed (#4867) Co-authored-by: Raphael Michel --- doc/development/api/general.rst | 2 +- src/pretix/base/services/orders.py | 6 ++++-- src/pretix/base/signals.py | 10 ++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/doc/development/api/general.rst b/doc/development/api/general.rst index 05cc1a2677..c1d3a42022 100644 --- a/doc/development/api/general.rst +++ b/doc/development/api/general.rst @@ -23,7 +23,7 @@ There are multiple signals that will be sent out in the ordering cycle: .. automodule:: pretix.base.signals :no-index: - :members: validate_cart, validate_cart_addons, validate_order, order_valid_if_pending, order_fee_calculation, order_paid, order_placed, order_canceled, order_reactivated, order_expired, order_modified, order_changed, order_approved, order_denied, order_fee_type_name, allow_ticket_download, order_split, order_gracefully_delete, invoice_line_text + :members: validate_cart, validate_cart_addons, validate_order, order_valid_if_pending, order_fee_calculation, order_paid, order_placed, order_canceled, order_reactivated, order_expired, order_expiry_changed, order_modified, order_changed, order_approved, order_denied, order_fee_type_name, allow_ticket_download, order_split, order_gracefully_delete, invoice_line_text Check-ins """"""""" diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 4563183982..afa71dad19 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -98,8 +98,9 @@ from pretix.base.services.quotas import QuotaAvailability from pretix.base.services.tasks import ProfiledEventTask, ProfiledTask from pretix.base.signals import ( order_approved, order_canceled, order_changed, order_denied, order_expired, - order_fee_calculation, order_paid, order_placed, order_reactivated, - order_split, order_valid_if_pending, periodic_task, validate_order, + order_expiry_changed, order_fee_calculation, order_paid, order_placed, + order_reactivated, order_split, order_valid_if_pending, periodic_task, + validate_order, ) from pretix.base.timemachine import time_machine_now, time_machine_now_assigned from pretix.celery_app import app @@ -302,6 +303,7 @@ def extend_order(order: Order, new_date: datetime, force: bool=False, valid_if_p 'state_change': was_expired } ) + order_expiry_changed.send(sender=order.event, order=order) if was_expired: num_invoices = order.invoices.filter(is_cancellation=False).count() diff --git a/src/pretix/base/signals.py b/src/pretix/base/signals.py index 2e776e6840..71a920b590 100644 --- a/src/pretix/base/signals.py +++ b/src/pretix/base/signals.py @@ -563,6 +563,16 @@ as the first argument. As with all event-plugin signals, the ``sender`` keyword argument will contain the event. """ +order_expiry_changed = EventPluginSignal() +""" +Arguments: ``order`` + +This signal is sent out every time an order expiry date is changed as an explicit operation (i.e. not if +this is the result of an approval or order change). The order object is given as the first argument. + +As with all event-plugin signals, the ``sender`` keyword argument will contain the event. +""" + order_modified = EventPluginSignal() """ Arguments: ``order``