Răsfoiți Sursa

Fixes #7891: Fix display of form validation failures during device component creation

jeremystretch 4 ani în urmă
părinte
comite
25dc9cc14a

+ 1 - 0
docs/release-notes/version-3.2.md

@@ -157,6 +157,7 @@ Where it is desired to limit the range of available VLANs within a group, users
 * [#8761](https://github.com/netbox-community/netbox/issues/8761) - Correct view name resolution under journal entry views
 * [#8763](https://github.com/netbox-community/netbox/issues/8763) - Fix inventory item component assignment
 * [#8764](https://github.com/netbox-community/netbox/issues/8764) - Correct view name resolution for dynamic form fields
+* [#8791](https://github.com/netbox-community/netbox/issues/8791) - Fix display of form validation failures during device component creation
 
 ### Other Changes
 

+ 13 - 25
netbox/netbox/views/generic/object_views.py

@@ -559,31 +559,10 @@ class ComponentCreateView(GetReturnURLMixin, BaseObjectView):
         })
 
     def post(self, request):
+        logger = logging.getLogger('netbox.views.ComponentCreateView')
         form, model_form = self.initialize_forms(request)
         instance = self.alter_object(self.queryset.model, request)
 
-        self.validate_form(request, form)
-
-        if form.is_valid() and not form.errors:
-            if '_addanother' in request.POST:
-                return redirect(request.get_full_path())
-            else:
-                return redirect(self.get_return_url(request))
-
-        return render(request, self.template_name, {
-            'object': instance,
-            'replication_form': form,
-            'form': model_form,
-            'return_url': self.get_return_url(request),
-        })
-
-    # TODO: Refactor this method for clarity & better error reporting
-    def validate_form(self, request, form):
-        """
-        Validate form values and set errors on the form object as they are detected. If
-        no errors are found, signal success messages.
-        """
-        logger = logging.getLogger('netbox.views.ComponentCreateView')
         if form.is_valid():
             new_components = []
             data = deepcopy(request.POST)
@@ -618,8 +597,12 @@ class ComponentCreateView(GetReturnURLMixin, BaseObjectView):
                         messages.success(request, "Added {} {}".format(
                             len(new_components), self.queryset.model._meta.verbose_name_plural
                         ))
-                        # Return the newly created objects so overridden post methods can use the data as needed.
-                        return new_objs
+
+                        # Redirect user on success
+                        if '_addanother' in request.POST:
+                            return redirect(request.get_full_path())
+                        else:
+                            return redirect(self.get_return_url(request))
 
                 except PermissionsViolation:
                     msg = "Component creation failed due to object-level permissions violation"
@@ -627,4 +610,9 @@ class ComponentCreateView(GetReturnURLMixin, BaseObjectView):
                     form.add_error(None, msg)
                     clear_webhooks.send(sender=self)
 
-        return None
+        return render(request, self.template_name, {
+            'object': instance,
+            'replication_form': form,
+            'form': model_form,
+            'return_url': self.get_return_url(request),
+        })