Use models.TextChoices

This commit is contained in:
Mira Weller
2026-08-11 16:25:11 +02:00
parent eec6df166d
commit 346f481093
8 changed files with 22 additions and 23 deletions
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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):
+1 -1
View File
@@ -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')
+5 -8
View File
@@ -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")
+1 -1
View File
@@ -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(
+1 -1
View File
@@ -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:
+11 -9
View File
@@ -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:
+1 -1
View File
@@ -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(