diff --git a/src/pretix/base/models/checkin.py b/src/pretix/base/models/checkin.py index 0f29743b4..8248671fc 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 65427ae4a..4cd0a1e6d 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