From 99bc133540c197f1cb6d38209c75a18d2100746e Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 21 Apr 2021 12:56:28 +0200 Subject: [PATCH] Check-in list editor: Allow to delete last rule --- src/pretix/base/models/checkin.py | 5 +++++ src/pretix/control/forms/checkin.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/models/checkin.py b/src/pretix/base/models/checkin.py index 0f29743b47..8248671fc6 100644 --- a/src/pretix/base/models/checkin.py +++ b/src/pretix/base/models/checkin.py @@ -225,6 +225,11 @@ class CheckinList(LoggedModel): for v in values: cls.validate_rules(v, seen_nonbool=seen_nonbool or operator not in ('or', 'and'), depth=depth + 1) + if operator in ('or', 'and') and depth == 0 and not values: + return {} + + return rules + class Checkin(models.Model): """ diff --git a/src/pretix/control/forms/checkin.py b/src/pretix/control/forms/checkin.py index 65427ae4a9..4cd0a1e6d4 100644 --- a/src/pretix/control/forms/checkin.py +++ b/src/pretix/control/forms/checkin.py @@ -128,7 +128,7 @@ class CheckinListForm(forms.ModelForm): def clean(self): d = super().clean() - CheckinList.validate_rules(d.get('rules')) + d['rules'] = CheckinList.validate_rules(d.get('rules')) return d