Skip to content

Commit 0055210

Browse files
committed
Fix new_or_changed validations
I apparently completely broke the 'changed' part of new_or_changed several months ago. Exciting!
1 parent 4323e50 commit 0055210

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

uber/utils.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,14 @@ def validate_model(forms, model, create_preview_model=True, is_admin=False):
749749

750750
all_errors = defaultdict(list)
751751
rollback_session = None
752+
extra_validators = {}
753+
754+
for form in forms.values():
755+
extra_validators[form] = defaultdict(list)
756+
for key, field in form.field_list:
757+
extra_validators[form][key].extend(form.field_validation.get_validations_by_field(key))
758+
if field and (model.is_new or getattr(model, key, None) != field.data):
759+
extra_validators[form][key].extend(form.new_or_changed.get_validations_by_field(key))
752760

753761
if create_preview_model:
754762
preview_model = model
@@ -763,13 +771,7 @@ def validate_model(forms, model, create_preview_model=True, is_admin=False):
763771
form.is_admin = is_admin
764772
form.model = preview_model
765773

766-
extra_validators = defaultdict(list)
767-
768-
for key, field in form.field_list:
769-
extra_validators[key].extend(form.field_validation.get_validations_by_field(key))
770-
if field and (model.is_new or getattr(model, key, None) != field.data):
771-
extra_validators[key].extend(form.new_or_changed.get_validations_by_field(key))
772-
valid = form.validate(extra_validators=extra_validators)
774+
valid = form.validate(extra_validators=extra_validators[form])
773775
if not valid:
774776
for key, val in form.errors.items():
775777
all_errors[form._prefix + key].extend(map(str, val))

0 commit comments

Comments
 (0)