From 77da4052b90a04d41704b562b8a3edb5ea225b50 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 15 Nov 2023 15:20:30 +0100 Subject: [PATCH] Order list export: Expose same "extended status" as in backend (#3674) * Order list export: Expose same "extended status" as in backend * Review notes --- src/pretix/base/exporters/orderlist.py | 6 +++--- src/pretix/base/models/orders.py | 12 ++++++++++++ .../pretixcontrol/orders/fragment_order_status.html | 1 + .../pretixpresale/event/fragment_order_status.html | 1 + 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/exporters/orderlist.py b/src/pretix/base/exporters/orderlist.py index 79b64f292f..d8199d1021 100644 --- a/src/pretix/base/exporters/orderlist.py +++ b/src/pretix/base/exporters/orderlist.py @@ -332,7 +332,7 @@ class OrderListExporter(MultiSheetListExporter): self.event_object_cache[order.event_id].slug, order.code, order.total, - order.get_status_display(), + order.get_extended_status_display(), order.email, str(order.phone) if order.phone else '', order.datetime.astimezone(tz).strftime('%Y-%m-%d'), @@ -463,7 +463,7 @@ class OrderListExporter(MultiSheetListExporter): row = [ self.event_object_cache[order.event_id].slug, order.code, - _("canceled") if op.canceled else order.get_status_display(), + _("canceled") if op.canceled else order.get_extended_status_display(), order.email, str(order.phone) if order.phone else '', order.datetime.astimezone(tz).strftime('%Y-%m-%d'), @@ -638,7 +638,7 @@ class OrderListExporter(MultiSheetListExporter): self.event_object_cache[order.event_id].slug, order.code, op.positionid, - _("canceled") if op.canceled else order.get_status_display(), + _("canceled") if op.canceled else order.get_extended_status_display(), order.email, str(order.phone) if order.phone else '', order.datetime.astimezone(tz).strftime('%Y-%m-%d'), diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index 422b55e95b..ffc2180afe 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -325,6 +325,18 @@ class Order(LockModel, LoggedModel): def email_confirm_hash(self): return hashlib.sha256(settings.SECRET_KEY.encode() + self.secret.encode()).hexdigest()[:9] + def get_extended_status_display(self): + # Changes in this method should to be replicated in pretixcontrol/orders/fragment_order_status.html + # and pretixpresale/event/fragment_order_status.html + if self.status == Order.STATUS_PENDING: + if self.require_approval: + return _("approval pending") + elif self.valid_if_pending: + return pgettext_lazy("order state", "pending (confirmed)") + elif self.status == Order.STATUS_PAID and self.count_positions == 0: + return _("canceled (paid fee)") + return self.get_status_display() + @property def fees(self): """ diff --git a/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html b/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html index a526e3e72e..9e7da454a6 100644 --- a/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html +++ b/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html @@ -1,5 +1,6 @@ {% load i18n %} {% load bootstrap3 %} +{# Changes should be replicated in pretixpresale/event/fragment_order_status.html and in pretix/base/models/orders.py #} {% if order.status == "n" %} {% if order.require_approval %} diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_order_status.html b/src/pretix/presale/templates/pretixpresale/event/fragment_order_status.html index 6ecee53597..7f213c2edd 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_order_status.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_order_status.html @@ -1,5 +1,6 @@ {% load i18n %} {% load bootstrap3 %} +{# Changes should be replicated in pretixcontrol/orders/fragment_order_status.html and in pretix/base/models/orders.py #} {% if order.status == "n" %} {% if order.require_approval %} {% trans "Approval pending" %}