diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 717b34266..fa8d36154 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -550,7 +550,8 @@ class BaseQuestionsForm(forms.Form): if not self.all_optional: for q in question_cache.values(): - if question_is_required(q) and not d.get('question_%d' % q.pk): + answer = d.get('question_%d' % q.pk) + if question_is_required(q) and not answer and answer != 0: raise ValidationError({'question_%d' % q.pk: [_('This field is required')]}) return d diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py index 5d77533cf..adc770a70 100644 --- a/src/pretix/presale/checkoutflow.py +++ b/src/pretix/presale/checkoutflow.py @@ -570,7 +570,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep): ) for q in cp.item.questions_to_ask: - if question_is_required(q) and not answ.get(q.id): + if question_is_required(q) and q.id not in answ: if warn: messages.warning(request, _('Please fill in answers to all required questions.')) return False diff --git a/src/tests/presale/test_checkout.py b/src/tests/presale/test_checkout.py index 86371f892..1a4134041 100644 --- a/src/tests/presale/test_checkout.py +++ b/src/tests/presale/test_checkout.py @@ -2660,7 +2660,7 @@ class QuestionsTestCase(BaseCheckoutTestCase, TestCase): # Corrected request response = self.client.post('/%s/%s/checkout/questions/' % (self.orga.slug, self.event.slug), { '%s-question_%s' % (cr1.id, q1.id): '42', - '%s-question_%s' % (cr2.id, q1.id): '23', + '%s-question_%s' % (cr2.id, q1.id): '0', '%s-question_%s' % (cr1.id, q2.id): 'Internet', '%s-question_%s' % (cr2.id, q2.id): '', 'email': 'admin@localhost' @@ -2750,6 +2750,7 @@ class QuestionsTestCase(BaseCheckoutTestCase, TestCase): event=self.event, question='Why not?', type=Question.TYPE_TEXT, required=True, dependency_question=self.q3, dependency_values=['False'] ) + self.ticket.questions.add(self.q1) self.ticket.questions.add(self.q2a) self.ticket.questions.add(self.q2b)