From f643f2c6017833e9996988f455d013938286ea5e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 26 Apr 2017 13:21:38 -0400 Subject: [PATCH] Fixes #1103: Correct handling of validation errors when creating IP addresses in bulk --- netbox/utilities/views.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index 71e385a6e..1985df2ac 100644 --- a/netbox/utilities/views.py +++ b/netbox/utilities/views.py @@ -329,13 +329,21 @@ class BulkAddView(View): new_objs = [] try: with transaction.atomic(): + # Validate and save each object individually for value in pattern: model_form_data[pattern_target] = value model_form = self.model_form(model_form_data) - obj = model_form.save() - new_objs.append(obj) - except ValidationError as e: - form.add_error(None, e) + if model_form.is_valid(): + obj = model_form.save() + new_objs.append(obj) + else: + for error in model_form.errors.as_data().values(): + form.add_error(None, error) + # Abort the creation of all objects if errors exist + if form.errors: + raise ValidationError("Validation of one or more model forms failed.") + except ValidationError: + pass if not form.errors: msg = u"Added {} {}".format(len(new_objs), model._meta.verbose_name_plural)