From dc662c973b058402d3610914c28db47f7bc0b897 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Wed, 12 Aug 2026 15:47:15 +0200 Subject: [PATCH] Reuse get_fake_attendee_questions in QuestionList --- src/pretix/base/forms/questions.py | 37 +++++++++--------- src/pretix/control/views/item.py | 61 +----------------------------- 2 files changed, 20 insertions(+), 78 deletions(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index b02706afea..3b677de714 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -638,7 +638,7 @@ class PortraitImageField(SizeValidationMixin, ExtValidationMixin, forms.FileFiel FakeQuestion = namedtuple( - 'FakeQuestion', 'system_question label position required help_text' + 'FakeQuestion', 'id question position required help_text container_type' ) @@ -647,19 +647,19 @@ def get_fake_attendee_questions(settings): sqo = settings.system_question_order if settings.attendee_names_asked: - fq.append(FakeQuestion('attendee_name_parts', _('Attendee name'), sqo.get('attendee_name_parts', 0), settings.attendee_names_required, '')) + fq.append(FakeQuestion('attendee_name_parts', _('Attendee name'), sqo.get('attendee_name_parts', 0), settings.attendee_names_required, '', Question.ContainerType.ORDERPOSITION)) if settings.attendee_emails_asked: - fq.append(FakeQuestion('attendee_email', _('Attendee email'), sqo.get('attendee_email', 0), settings.attendee_emails_required, '')) + fq.append(FakeQuestion('attendee_email', _('Attendee email'), sqo.get('attendee_email', 0), settings.attendee_emails_required, '', Question.ContainerType.ORDERPOSITION)) if settings.attendee_company_asked: - fq.append(FakeQuestion('company', _('Company'), sqo.get('company', 0), settings.attendee_company_required, '')) + fq.append(FakeQuestion('company', _('Company'), sqo.get('company', 0), settings.attendee_company_required, '', Question.ContainerType.ORDERPOSITION)) if settings.attendee_addresses_asked: - fq.append(FakeQuestion('street', _('Street'), sqo.get('street', 0), settings.attendee_addresses_required, '')) - fq.append(FakeQuestion('zipcode', _('ZIP code'), sqo.get('zipcode', 0), settings.attendee_addresses_required, '')) - fq.append(FakeQuestion('city', _('City'), sqo.get('city', 0), settings.attendee_addresses_required, '')) - fq.append(FakeQuestion('country', _('Country'), sqo.get('country', 0), settings.attendee_addresses_required, '')) + fq.append(FakeQuestion('street', _('Street'), sqo.get('street', 0), settings.attendee_addresses_required, '', Question.ContainerType.ORDERPOSITION)) + fq.append(FakeQuestion('zipcode', _('ZIP code'), sqo.get('zipcode', 0), settings.attendee_addresses_required, '', Question.ContainerType.ORDERPOSITION)) + fq.append(FakeQuestion('city', _('City'), sqo.get('city', 0), settings.attendee_addresses_required, '', Question.ContainerType.ORDERPOSITION)) + fq.append(FakeQuestion('country', _('Country'), sqo.get('country', 0), settings.attendee_addresses_required, '', Question.ContainerType.ORDERPOSITION)) return fq @@ -998,7 +998,6 @@ class TicketQuestionsForm(BaseQuestionsForm): orderpos = self.orderpos = kwargs.pop('orderpos', None) pos = cartpos or orderpos item = pos.item - questions = pos.item.questions_to_ask event = kwargs.pop('event') self.all_optional = kwargs.pop('all_optional', False) self.attendee_addresses_required = event.settings.attendee_addresses_required and not self.all_optional @@ -1017,7 +1016,7 @@ class TicketQuestionsForm(BaseQuestionsForm): for q in questions: if isinstance(q, FakeQuestion): - self.fields[q.system_question] = self.build_system_question_field(request, event, pos, q) + self.fields[q.id] = self.build_system_question_field(request, event, pos, q) else: self.fields['question_%s' % q.id] = self.build_user_question_field(request, event, pos.answerlist, pos, q) @@ -1084,21 +1083,21 @@ class TicketQuestionsForm(BaseQuestionsForm): ) def build_system_question_field(self, request, event, pos, qc): - field_name = qc.system_question + field_name = qc.id if field_name == 'attendee_name_parts': return NamePartsFormField( max_length=255, required=qc.required and not self.all_optional, scheme=event.settings.name_scheme, titles=event.settings.name_scheme_titles, - label=qc.label, + label=qc.question, help_text=qc.help_text, initial=pos.attendee_name_parts, ) if field_name == 'attendee_email': return forms.EmailField( required=qc.required and not self.all_optional, - label=qc.label, + label=qc.question, help_text=qc.help_text, initial=pos.attendee_email, widget=forms.EmailInput( @@ -1110,7 +1109,7 @@ class TicketQuestionsForm(BaseQuestionsForm): if field_name == 'company': return forms.CharField( required=qc.required and not self.all_optional, - label=qc.label, + label=qc.question, help_text=qc.help_text, max_length=255, initial=pos.company, @@ -1119,7 +1118,7 @@ class TicketQuestionsForm(BaseQuestionsForm): if field_name == 'street': return forms.CharField( required=qc.required and not self.all_optional, - label=qc.label, + label=qc.question, help_text=qc.help_text, widget=forms.Textarea(attrs={ 'rows': 2, @@ -1132,7 +1131,7 @@ class TicketQuestionsForm(BaseQuestionsForm): return forms.CharField( required=False, max_length=30, - label=qc.label, + label=qc.question, help_text=qc.help_text, initial=pos.zipcode, widget=forms.TextInput(attrs={ @@ -1142,7 +1141,7 @@ class TicketQuestionsForm(BaseQuestionsForm): if field_name == 'city': return forms.CharField( required=False, - label=qc.label, + label=qc.question, help_text=qc.help_text, max_length=255, initial=pos.city, @@ -1156,7 +1155,7 @@ class TicketQuestionsForm(BaseQuestionsForm): countries=CachedCountries ).formfield( required=qc.required and not self.all_optional, - label=qc.label, + label=qc.question, help_text=qc.help_text, initial=country, widget=forms.Select(attrs={ @@ -1184,7 +1183,7 @@ class TicketQuestionsForm(BaseQuestionsForm): del self.data[fprefix + 'state'] field = forms.ChoiceField( - label=qc.label, + label=qc.question, help_text=qc.help_text, required=False, choices=c, diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 90d6bb44d2..5103564b37 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -65,6 +65,7 @@ from pretix.api.serializers.item import ( ItemVariationSerializer, ) from pretix.base.forms import I18nFormSet +from pretix.base.forms.questions import get_fake_attendee_questions from pretix.base.models import ( CartPosition, Item, ItemCategory, ItemProgramTime, ItemVariation, LogEntry, OrderPosition, Question, QuestionAnswer, QuestionOption, Quota, @@ -440,66 +441,8 @@ class QuestionList(ListView): def get_context_data(self, **kwargs): ctx = super().get_context_data(**kwargs) - questions = [] - sys_order = self.request.event.settings.system_question_order - - if self.request.event.settings.attendee_names_asked: - questions.append(FakeQuestion( - id='attendee_name_parts', - question=_('Attendee name'), - position=sys_order.get('attendee_name_parts', 0), - required=self.request.event.settings.attendee_names_required, - container_type=Question.ContainerType.ORDERPOSITION, - )) - - if self.request.event.settings.attendee_emails_asked: - questions.append(FakeQuestion( - id='attendee_email', - question=_('Attendee email'), - position=sys_order.get('attendee_email', 0), - required=self.request.event.settings.attendee_emails_required, - container_type=Question.ContainerType.ORDERPOSITION, - )) - - if self.request.event.settings.attendee_company_asked: - questions.append(FakeQuestion( - id='company', - question=_('Company'), - position=sys_order.get('company', 0), - required=self.request.event.settings.attendee_company_required, - container_type=Question.ContainerType.ORDERPOSITION, - )) - - if self.request.event.settings.attendee_addresses_asked: - questions.append(FakeQuestion( - id='street', - question=_('Street'), - position=sys_order.get('street', 0), - required=self.request.event.settings.attendee_addresses_required, - container_type=Question.ContainerType.ORDERPOSITION, - )) - questions.append(FakeQuestion( - id='zipcode', - question=_('ZIP code'), - position=sys_order.get('zipcode', 0), - required=self.request.event.settings.attendee_addresses_required, - container_type=Question.ContainerType.ORDERPOSITION, - )) - questions.append(FakeQuestion( - id='city', - question=_('City'), - position=sys_order.get('city', 0), - required=self.request.event.settings.attendee_addresses_required, - container_type=Question.ContainerType.ORDERPOSITION, - )) - questions.append(FakeQuestion( - id='country', - question=_('Country'), - position=sys_order.get('country', 0), - required=self.request.event.settings.attendee_addresses_required, - container_type=Question.ContainerType.ORDERPOSITION, - )) + questions = get_fake_attendee_questions(self.request.event.settings) questions += list(ctx['questions']) questions.sort(key=lambda q: q.position)