From 571fef4ed8d5d1414299a2e74272953e69ed49e7 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sun, 13 Dec 2020 16:29:17 +0100 Subject: [PATCH] Re-structure some querying on cart and order pages to reduce load --- src/pretix/base/models/orders.py | 4 +- src/pretix/presale/checkoutflow.py | 2 +- .../templates/pretixpresale/event/order.html | 6 +-- src/pretix/presale/views/__init__.py | 45 ++++++++++++++++--- src/pretix/presale/views/event.py | 2 +- src/pretix/presale/views/order.py | 2 + src/pretix/presale/views/questions.py | 26 +---------- 7 files changed, 48 insertions(+), 39 deletions(-) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index caf9d49026..eef3e8e034 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -902,7 +902,7 @@ class Order(LockModel, LoggedModel): @property def positions_with_tickets(self): - for op in self.positions.all(): + for op in self.positions.select_related('item'): if not op.generate_ticket: continue yield op @@ -1155,7 +1155,7 @@ class AbstractPosition(models.Model): (2) questions: a list of Question objects, extended by an 'answer' property """ self.answ = {} - for a in self.answers.all(): + for a in getattr(self, 'answerlist', self.answers.all()): # use prefetch_related cache from get_cart self.answ[a.question_id] = a # We need to clone our question objects, otherwise we will override the cached diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py index 4163f0c6e3..98a5590482 100644 --- a/src/pretix/presale/checkoutflow.py +++ b/src/pretix/presale/checkoutflow.py @@ -673,7 +673,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep): return ctx -class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep): +class PaymentStep(CartMixin, TemplateFlowStep): priority = 200 identifier = "payment" template_name = "pretixpresale/event/checkout_payment.html" diff --git a/src/pretix/presale/templates/pretixpresale/event/order.html b/src/pretix/presale/templates/pretixpresale/event/order.html index 85a21a606e..f70746370e 100644 --- a/src/pretix/presale/templates/pretixpresale/event/order.html +++ b/src/pretix/presale/templates/pretixpresale/event/order.html @@ -313,7 +313,7 @@ {% endif %}
- {% if order.user_change_allowed or order.user_cancel_allowed %} + {% if user_change_allowed or user_cancel_allowed %}

@@ -321,7 +321,7 @@