Run form-level validation only when every form's field is valid.
Change-Id: Ie46f5d27f21f6ddfc1e2cb86e081bea14e1099f4 Fixes: bug MRN-931.
This commit is contained in:
parent
90e672e29a
commit
c02e3afa03
@ -238,22 +238,26 @@ class ServiceConfigurationForm(UpdatableFieldsForm):
|
||||
attributes[attr_name] = get_attr(field_name)
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super(ServiceConfigurationForm, self).clean()
|
||||
all_data = self.service.update_cleaned_data(self, cleaned_data)
|
||||
context = yaql.create_context()
|
||||
for validator in self.validators:
|
||||
expr = self.get_yaql_expr(validator['expr'])
|
||||
if not yaql.parse(expr).evaluate(all_data, context):
|
||||
raise forms.ValidationError(_(validator.get('message', '')))
|
||||
if self._errors:
|
||||
return self.cleaned_data
|
||||
else:
|
||||
cleaned_data = super(ServiceConfigurationForm, self).clean()
|
||||
all_data = self.service.update_cleaned_data(self, cleaned_data)
|
||||
context = yaql.create_context()
|
||||
for validator in self.validators:
|
||||
expr = self.get_yaql_expr(validator['expr'])
|
||||
if not yaql.parse(expr).evaluate(all_data, context):
|
||||
raise forms.ValidationError(
|
||||
_(validator.get('message', '')))
|
||||
|
||||
for name, field in self.fields.iteritems():
|
||||
if isinstance(field, fields.PasswordField):
|
||||
field.compare(name, cleaned_data)
|
||||
for name, field in self.fields.iteritems():
|
||||
if isinstance(field, fields.PasswordField):
|
||||
field.compare(name, cleaned_data)
|
||||
|
||||
if hasattr(field, 'postclean'):
|
||||
value = field.postclean(self, cleaned_data)
|
||||
if value:
|
||||
cleaned_data[name] = value
|
||||
if hasattr(field, 'postclean'):
|
||||
value = field.postclean(self, cleaned_data)
|
||||
if value:
|
||||
cleaned_data[name] = value
|
||||
|
||||
self.service.update_cleaned_data(self, cleaned_data)
|
||||
return cleaned_data
|
||||
self.service.update_cleaned_data(self, cleaned_data)
|
||||
return cleaned_data
|
||||
|
Loading…
Reference in New Issue
Block a user