From 35f1999b3a1a4b9ed12986597b2a5c315b680f45 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sat, 17 Mar 2018 22:10:43 +0100 Subject: [PATCH] Allow organizers to modify answers to check-in questions --- src/pretix/base/views/mixins.py | 6 +++++- src/pretix/control/views/orders.py | 1 + src/pretix/presale/views/questions.py | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/views/mixins.py b/src/pretix/base/views/mixins.py index 1c592b19a..5760686a0 100644 --- a/src/pretix/base/views/mixins.py +++ b/src/pretix/base/views/mixins.py @@ -144,6 +144,7 @@ class BaseQuestionsViewMixin: class OrderQuestionsViewMixin(BaseQuestionsViewMixin): invoice_form_class = BaseInvoiceAddressForm + only_user_visible = True @cached_property def _positions_for_questions(self): @@ -151,6 +152,9 @@ class OrderQuestionsViewMixin(BaseQuestionsViewMixin): @cached_property def positions(self): + qqs = Question.objects.all() + if self.only_user_visible: + qqs = qqs.filter(ask_during_checkin=False) return list(self.order.positions.select_related( 'item', 'variation' ).prefetch_related( @@ -158,7 +162,7 @@ class OrderQuestionsViewMixin(BaseQuestionsViewMixin): QuestionAnswer.objects.prefetch_related('options'), to_attr='answerlist'), Prefetch('item__questions', - Question.objects.filter(ask_during_checkin=False).prefetch_related( + qqs.prefetch_related( Prefetch('options', QuestionOption.objects.prefetch_related(Prefetch( # This prefetch statement is utter bullshit, but it actually prevents Django from doing # a lot of queries since ModelChoiceIterator stops trying to be clever once we have diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 39dc2d071..3d756eb34 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -639,6 +639,7 @@ class OrderChange(OrderView): class OrderModifyInformation(OrderQuestionsViewMixin, OrderView): permission = 'can_change_orders' template_name = 'pretixcontrol/order/change_questions.html' + only_user_visible = False def post(self, request, *args, **kwargs): failed = not self.save() or not self.invoice_form.is_valid() diff --git a/src/pretix/presale/views/questions.py b/src/pretix/presale/views/questions.py index a03c1ebfb..610ebe26f 100644 --- a/src/pretix/presale/views/questions.py +++ b/src/pretix/presale/views/questions.py @@ -9,9 +9,13 @@ from pretix.presale.views import get_cart class QuestionsViewMixin(BaseQuestionsViewMixin): form_class = QuestionsForm + only_user_visible = True @cached_property def _positions_for_questions(self): + qqs = Question.objects.all() + if self.only_user_visible: + qqs = qqs.filter(ask_during_checkin=False) cart = get_cart(self.request).select_related( 'addon_to' ).prefetch_related( @@ -20,7 +24,7 @@ class QuestionsViewMixin(BaseQuestionsViewMixin): QuestionAnswer.objects.prefetch_related('options'), to_attr='answerlist'), Prefetch('item__questions', - Question.objects.filter(ask_during_checkin=False).prefetch_related( + qqs.prefetch_related( Prefetch('options', QuestionOption.objects.prefetch_related(Prefetch( # This prefetch statement is utter bullshit, but it actually prevents Django from doing # a lot of queries since ModelChoiceIterator stops trying to be clever once we have