mirror of
https://github.com/pretix/pretix.git
synced 2026-08-17 11:56:27 +00:00
Use models.TextChoices
This commit is contained in:
@@ -619,7 +619,7 @@ class QuestionSerializer(I18nAwareModelSerializer):
|
||||
options_data = validated_data.pop('options') if 'options' in validated_data else []
|
||||
items = validated_data.pop('items', [])
|
||||
|
||||
question = Question.objects.create(**validated_data, container_type=Question.CONTAINER_TYPE_ORDERPOSITION)
|
||||
question = Question.objects.create(**validated_data, container_type=Question.ContainerType.ORDERPOSITION)
|
||||
question.items.set(items)
|
||||
for opt_data in options_data:
|
||||
QuestionOption.objects.create(question=question, **opt_data)
|
||||
|
||||
@@ -475,7 +475,7 @@ class QuestionViewSet(ConditionalListView, viewsets.ModelViewSet):
|
||||
write_permission = 'event.items:write'
|
||||
|
||||
def get_queryset(self):
|
||||
return self.request.event.questions.filter(container_type=Question.CONTAINER_TYPE_ORDERPOSITION).prefetch_related('options').all()
|
||||
return self.request.event.questions.filter(container_type=Question.ContainerType.ORDERPOSITION).prefetch_related('options').all()
|
||||
|
||||
@transaction.atomic()
|
||||
def perform_create(self, serializer):
|
||||
|
||||
@@ -967,7 +967,7 @@ class OrderLevelQuestionsForm(BaseQuestionsForm):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
questions = Question.objects.filter(
|
||||
event=event, container_type=Question.CONTAINER_TYPE_ORDER,
|
||||
event=event, container_type=Question.ContainerType.ORDER,
|
||||
ask_during_checkin=False, hidden=False,
|
||||
).order_by('position')
|
||||
answerlist = container.answers.prefetch_related('options')
|
||||
|
||||
@@ -1606,12 +1606,9 @@ class Question(LoggedModel):
|
||||
:param dependency_values: The values that `dependency_question` needs to be set to for this question to be applicable.
|
||||
:type dependency_values: list[str]
|
||||
"""
|
||||
CONTAINER_TYPE_ORDER = "O"
|
||||
CONTAINER_TYPE_ORDERPOSITION = "P"
|
||||
CONTAINER_TYPE_CHOICES = (
|
||||
(CONTAINER_TYPE_ORDER, _("Order")),
|
||||
(CONTAINER_TYPE_ORDERPOSITION, _("Order position")),
|
||||
)
|
||||
class ContainerType(models.TextChoices):
|
||||
ORDER = "O", _("Order")
|
||||
ORDERPOSITION = "P", _("Order position")
|
||||
TYPE_NUMBER = "N"
|
||||
TYPE_STRING = "S"
|
||||
TYPE_TEXT = "T"
|
||||
@@ -1649,9 +1646,9 @@ class Question(LoggedModel):
|
||||
)
|
||||
container_type = models.CharField(
|
||||
max_length=5,
|
||||
choices=CONTAINER_TYPE_CHOICES,
|
||||
choices=ContainerType.choices,
|
||||
verbose_name=_("Asked on"),
|
||||
default=CONTAINER_TYPE_ORDERPOSITION,
|
||||
default=ContainerType.ORDERPOSITION,
|
||||
)
|
||||
question = I18nTextField(
|
||||
verbose_name=_("Question")
|
||||
|
||||
@@ -347,7 +347,7 @@ class OrderQuestionsViewMixin(BaseQuestionsViewMixin):
|
||||
def positions(self):
|
||||
qqs = self.request.event.questions.all()
|
||||
if self.only_user_visible:
|
||||
qqs = qqs.filter(ask_during_checkin=False, hidden=False, container_type=Question.CONTAINER_TYPE_ORDERPOSITION)
|
||||
qqs = qqs.filter(ask_during_checkin=False, hidden=False, container_type=Question.ContainerType.ORDERPOSITION)
|
||||
return list(self.order.positions.select_related(
|
||||
'item', 'variation'
|
||||
).prefetch_related(
|
||||
|
||||
@@ -153,7 +153,7 @@ class QuestionForm(I18nModelForm):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if self.instance.container_type == Question.CONTAINER_TYPE_ORDERPOSITION:
|
||||
if self.instance.container_type == Question.ContainerType.ORDERPOSITION:
|
||||
self.fields['items'].queryset = self.instance.event.items.all()
|
||||
self.fields['items'].required = True
|
||||
else:
|
||||
|
||||
@@ -450,7 +450,7 @@ class QuestionList(ListView):
|
||||
question=_('Attendee name'),
|
||||
position=sys_order.get('attendee_name_parts', 0),
|
||||
required=self.request.event.settings.attendee_names_required,
|
||||
container_type=Question.CONTAINER_TYPE_ORDERPOSITION,
|
||||
container_type=Question.ContainerType.ORDERPOSITION,
|
||||
))
|
||||
|
||||
if self.request.event.settings.attendee_emails_asked:
|
||||
@@ -459,7 +459,7 @@ class QuestionList(ListView):
|
||||
question=_('Attendee email'),
|
||||
position=sys_order.get('attendee_email', 0),
|
||||
required=self.request.event.settings.attendee_emails_required,
|
||||
container_type=Question.CONTAINER_TYPE_ORDERPOSITION,
|
||||
container_type=Question.ContainerType.ORDERPOSITION,
|
||||
))
|
||||
|
||||
if self.request.event.settings.attendee_company_asked:
|
||||
@@ -468,7 +468,7 @@ class QuestionList(ListView):
|
||||
question=_('Company'),
|
||||
position=sys_order.get('company', 0),
|
||||
required=self.request.event.settings.attendee_company_required,
|
||||
container_type=Question.CONTAINER_TYPE_ORDERPOSITION,
|
||||
container_type=Question.ContainerType.ORDERPOSITION,
|
||||
))
|
||||
|
||||
if self.request.event.settings.attendee_addresses_asked:
|
||||
@@ -477,28 +477,28 @@ class QuestionList(ListView):
|
||||
question=_('Street'),
|
||||
position=sys_order.get('street', 0),
|
||||
required=self.request.event.settings.attendee_addresses_required,
|
||||
container_type=Question.CONTAINER_TYPE_ORDERPOSITION,
|
||||
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.CONTAINER_TYPE_ORDERPOSITION,
|
||||
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.CONTAINER_TYPE_ORDERPOSITION,
|
||||
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.CONTAINER_TYPE_ORDERPOSITION,
|
||||
container_type=Question.ContainerType.ORDERPOSITION,
|
||||
))
|
||||
|
||||
questions += list(ctx['questions'])
|
||||
@@ -539,7 +539,7 @@ def reorder_questions(request, organizer, event):
|
||||
}
|
||||
)
|
||||
|
||||
if request.GET['container_type'] == Question.CONTAINER_TYPE_ORDERPOSITION:
|
||||
if request.GET['container_type'] == Question.ContainerType.ORDERPOSITION:
|
||||
system_question_order = {}
|
||||
for s in ('attendee_name_parts', 'attendee_email', 'company', 'street', 'zipcode', 'city', 'country'):
|
||||
if s in ids:
|
||||
@@ -789,7 +789,9 @@ class QuestionCreate(EventPermissionRequiredMixin, QuestionMixin, CreateView):
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
kwargs['instance'] = Question(event=self.request.event)
|
||||
kwargs['instance'].container_type = self.request.GET.get('container_type', Question.CONTAINER_TYPE_ORDERPOSITION)
|
||||
kwargs['instance'].container_type = self.request.GET.get('container_type', Question.ContainerType.ORDERPOSITION)
|
||||
if kwargs['instance'].container_type not in Question.ContainerType.values:
|
||||
raise PermissionDenied
|
||||
return kwargs
|
||||
|
||||
def get_success_url(self) -> str:
|
||||
|
||||
@@ -408,7 +408,7 @@ def get_cart(request):
|
||||
request._cart_cache = CartPosition.objects.none()
|
||||
else:
|
||||
qqs = request.event.questions.all()
|
||||
qqs = qqs.filter(ask_during_checkin=False, hidden=False, container_type=Question.CONTAINER_TYPE_ORDERPOSITION)
|
||||
qqs = qqs.filter(ask_during_checkin=False, hidden=False, container_type=Question.ContainerType.ORDERPOSITION)
|
||||
request._cart_cache = CartPosition.objects.filter(
|
||||
cart_id=cart_id, event=request.event
|
||||
).annotate(
|
||||
|
||||
Reference in New Issue
Block a user