mirror of
https://github.com/pretix/pretix.git
synced 2026-08-16 11:46:27 +00:00
Reuse get_fake_attendee_questions in QuestionList
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user