Browse Source

Fixes: #14044 - Allow regex renaming of unnamed devices (#17212)

* Fixes: #14044 - Allow regex renaming of unnamed devices

* Allow regex renaming of unnamed devices (already allowed actually)
* Catch errors relating to unnamed devices or integrity errors as a result of the rename process

* Move validation to ensure all renames are eligible

* Update to treat null name an empty string
Daniel Sheppard 1 năm trước cách đây
mục cha
commit
674af4d6bc

+ 5 - 2
netbox/netbox/views/generic/bulk_views.py

@@ -744,7 +744,6 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
         renamed_pks = []
         renamed_pks = []
 
 
         for obj in selected_objects:
         for obj in selected_objects:
-
             # Take a snapshot of change-logged models
             # Take a snapshot of change-logged models
             if hasattr(obj, 'snapshot'):
             if hasattr(obj, 'snapshot'):
                 obj.snapshot()
                 obj.snapshot()
@@ -758,7 +757,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
                 except re.error:
                 except re.error:
                     obj.new_name = obj.name
                     obj.new_name = obj.name
             else:
             else:
-                obj.new_name = obj.name.replace(find, replace)
+                obj.new_name = (obj.name or '').replace(find, replace)
             renamed_pks.append(obj.pk)
             renamed_pks.append(obj.pk)
 
 
         return renamed_pks
         return renamed_pks
@@ -793,6 +792,10 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
                             )
                             )
                             return redirect(self.get_return_url(request))
                             return redirect(self.get_return_url(request))
 
 
+                except IntegrityError as e:
+                    messages.error(self.request, ", ".join(e.args))
+                    clear_events.send(sender=self)
+
                 except (AbortRequest, PermissionsViolation) as e:
                 except (AbortRequest, PermissionsViolation) as e:
                     logger.debug(e.message)
                     logger.debug(e.message)
                     form.add_error(None, e.message)
                     form.add_error(None, e.message)