diff --git a/src/pretix/api/serializers/item.py b/src/pretix/api/serializers/item.py index aa5a0d6dab..51e676ed1d 100644 --- a/src/pretix/api/serializers/item.py +++ b/src/pretix/api/serializers/item.py @@ -249,6 +249,9 @@ class QuestionSerializer(I18nAwareModelSerializer): dep = full_data.get('dependency_question') if dep: + if dep.ask_during_checkin: + raise ValidationError(_('Question cannot depend on a question asked during check-in.')) + seen_ids = {self.instance.pk} if self.instance else set() while dep: if dep.pk in seen_ids: diff --git a/src/pretix/control/forms/item.py b/src/pretix/control/forms/item.py index fb71d98837..298816849c 100644 --- a/src/pretix/control/forms/item.py +++ b/src/pretix/control/forms/item.py @@ -48,7 +48,8 @@ class QuestionForm(I18nModelForm): self.fields['items'].queryset = self.instance.event.items.all() self.fields['items'].required = True self.fields['dependency_question'].queryset = self.instance.event.questions.filter( - type__in=(Question.TYPE_BOOLEAN, Question.TYPE_CHOICE, Question.TYPE_CHOICE_MULTIPLE) + type__in=(Question.TYPE_BOOLEAN, Question.TYPE_CHOICE, Question.TYPE_CHOICE_MULTIPLE), + ask_during_checkin=False ) if self.instance.pk: self.fields['dependency_question'].queryset = self.fields['dependency_question'].queryset.exclude( @@ -65,6 +66,9 @@ class QuestionForm(I18nModelForm): def clean_dependency_question(self): dep = val = self.cleaned_data.get('dependency_question') if dep: + if dep.ask_during_checkin: + raise ValidationError(_('Question cannot depend on a question asked during check-in.')) + seen_ids = {self.instance.pk} if self.instance else set() while dep: if dep.pk in seen_ids: