diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index ce32091a72..ad7754f5c0 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -878,7 +878,7 @@ class BaseQuestionsForm(forms.Form): field.answer = answers[0] if qc.dependency_question_id: - field.widget.attrs['data-question-dependency'] = qc.dependency_question_id + field.widget.attrs['data-question-dependency'] = f"question_{qc.dependency_question.user_datafield_id}" if qc.dependency_question.user_datafield_id else qc.dependency_question.system_datafield field.widget.attrs['data-question-dependency-values'] = escapejson_attr(json.dumps(qc.dependency_values)) if datafield.type != 'M': field.widget.attrs['required'] = qc.required and not self.all_optional diff --git a/src/pretix/control/forms/item.py b/src/pretix/control/forms/item.py index b90592ffbd..00c90988b5 100644 --- a/src/pretix/control/forms/item.py +++ b/src/pretix/control/forms/item.py @@ -153,54 +153,12 @@ class QuestionForm(I18nModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.container_type == Question.ContainerType.ORDERPOSITION: - self.fields['items'].queryset = self.instance.event.items.all() - self.fields['items'].required = True - else: - del self.fields['items'] - del self.fields['ask_during_checkin'] + if self.instance.container_type != Question.ContainerType.ORDERPOSITION: del self.fields['show_during_checkin'] del self.fields['print_on_invoice'] - self.fields['dependency_question'].widget.attrs['data-container-type'] = self.instance.container_type - self.fields['dependency_question'].queryset = self.instance.event.questions.filter( - type__in=(Question.TYPE_BOOLEAN, Question.TYPE_CHOICE, Question.TYPE_CHOICE_MULTIPLE), - ask_during_checkin=False, - container_type=self.instance.container_type, - ) - if self.instance.pk: - self.fields['dependency_question'].queryset = self.fields['dependency_question'].queryset.exclude( - pk=self.instance.pk - ) self.fields['identifier'].required = False - self.fields['dependency_values'].required = False self.fields['help_text'].widget.attrs['rows'] = 3 - def clean_dependency_values(self): - val = self.data.getlist('dependency_values') - return val - - 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: - raise ValidationError(_('Circular dependency between questions detected.')) - seen_ids.add(dep.pk) - dep = dep.dependency_question - return val - - def clean_ask_during_checkin(self): - val = self.cleaned_data.get('ask_during_checkin') - - if val and self.cleaned_data.get('type') in Question.ASK_DURING_CHECKIN_UNSUPPORTED: - raise ValidationError(_('This type of question cannot be asked during check-in.')) - - return val - def clean_show_during_checkin(self): val = self.cleaned_data.get('show_during_checkin') @@ -236,13 +194,9 @@ class QuestionForm(I18nModelForm): 'help_text', 'type', 'required', - 'ask_during_checkin', 'show_during_checkin', 'hidden', 'identifier', - 'items', - 'dependency_question', - 'dependency_values', 'print_on_invoice', 'valid_number_min', 'valid_number_max', @@ -259,17 +213,11 @@ class QuestionForm(I18nModelForm): 'valid_datetime_max': SplitDateTimePickerWidget(without_seconds=True), 'valid_date_min': DatePickerWidget(), 'valid_date_max': DatePickerWidget(), - 'items': forms.CheckboxSelectMultiple( - attrs={'class': 'scrolling-multiple-choice'} - ), - 'dependency_values': forms.SelectMultiple, 'help_text': I18nMarkdownTextarea, } field_classes = { 'valid_datetime_min': SplitDateTimeField, 'valid_datetime_max': SplitDateTimeField, - 'items': ItemMultipleChoiceField, - 'dependency_question': SafeModelChoiceField, } diff --git a/src/pretix/control/templates/pretixcontrol/items/question_edit.html b/src/pretix/control/templates/pretixcontrol/items/question_edit.html index dfe51714a3..6954f2d2cf 100644 --- a/src/pretix/control/templates/pretixcontrol/items/question_edit.html +++ b/src/pretix/control/templates/pretixcontrol/items/question_edit.html @@ -7,14 +7,14 @@ {% if question %} {% blocktrans with name=question.question %}Data field: {{ name }}{% endblocktrans %} {% else %} - {% trans "Question" %} + {% trans "Create new data field" %} {% endif %} {% endblock %} {% block inside %} {% if question %}