7

Use a form to clean the instance

This commit is contained in:
Todd Dembrey
2017-10-23 15:00:31 +01:00
parent c6ff2801c5
commit 44cc95617e
3 changed files with 54 additions and 19 deletions

View File

@ -0,0 +1,18 @@
from django.core.exceptions import ValidationError
from wagtail.wagtailadmin.forms import WagtailAdminModelForm
class SegmentAdminForm(WagtailAdminModelForm):
def clean(self):
cleaned_data = super(SegmentAdminForm, self).clean()
rules = [form for formset in self.formsets.values() for form in formset if form not in formset.deleted_forms]
consistent = rules and all(rule.instance.static for rule in rules)
from .models import Segment
if cleaned_data.get('type') == Segment.TYPE_STATIC and not cleaned_data.get('count') and not consistent:
raise ValidationError({
'count': ('Static segments with non-static compatible rules must include a count.'),
})
return cleaned_data