From 8a8f8ae10a8375b706df4c32c042dd5c301acc33 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 17 Oct 2019 12:57:17 +0200 Subject: [PATCH] Fix KeyError in question_is_visible if question dependency is unknown --- src/pretix/base/forms/questions.py | 2 ++ src/pretix/base/models/orders.py | 2 ++ src/pretix/presale/checkoutflow.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 523382cac4..84d359f2b9 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -348,6 +348,8 @@ class BaseQuestionsForm(forms.Form): question_cache = {f.question.pk: f.question for f in self.fields.values() if getattr(f, 'question', None)} def question_is_visible(parentid, qvals): + if parentid not in question_cache: + return False parentq = question_cache[parentid] if parentq.dependency_question_id and not question_is_visible(parentq.dependency_question_id, parentq.dependency_values): return False diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index fe073b8b26..0aa8450f50 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -1043,6 +1043,8 @@ class AbstractPosition(models.Model): } def question_is_visible(parentid, qvals): + if parentid not in question_cache: + return False parentq = question_cache[parentid] if parentq.dependency_question_id and not question_is_visible(parentq.dependency_question_id, parentq.dependency_values): return False diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py index d920605db8..59ae609d89 100644 --- a/src/pretix/presale/checkoutflow.py +++ b/src/pretix/presale/checkoutflow.py @@ -441,6 +441,8 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep): } def question_is_visible(parentid, qvals): + if parentid not in question_cache: + return False parentq = question_cache[parentid] if parentq.dependency_question_id and not question_is_visible(parentq.dependency_question_id, parentq.dependency_values): return False