浏览代码

Merge pull request #9639 from cpund/8723-branch

PR for #8723
Jeremy Stretch 3 年之前
父节点
当前提交
14821eed44
共有 4 个文件被更改,包括 11 次插入1 次删除
  1. 1 0
      netbox/dcim/urls.py
  2. 6 0
      netbox/dcim/views.py
  3. 1 1
      netbox/netbox/views/generic/bulk_views.py
  4. 3 0
      netbox/templates/dcim/device_list.html

+ 1 - 0
netbox/dcim/urls.py

@@ -248,6 +248,7 @@ urlpatterns = [
     path('devices/import/', views.DeviceBulkImportView.as_view(), name='device_import'),
     path('devices/import/', views.DeviceBulkImportView.as_view(), name='device_import'),
     path('devices/import/child-devices/', views.ChildDeviceBulkImportView.as_view(), name='device_import_child'),
     path('devices/import/child-devices/', views.ChildDeviceBulkImportView.as_view(), name='device_import_child'),
     path('devices/edit/', views.DeviceBulkEditView.as_view(), name='device_bulk_edit'),
     path('devices/edit/', views.DeviceBulkEditView.as_view(), name='device_bulk_edit'),
+    path('devices/rename/', views.DeviceBulkRenameView.as_view(), name='device_bulk_rename'),
     path('devices/delete/', views.DeviceBulkDeleteView.as_view(), name='device_bulk_delete'),
     path('devices/delete/', views.DeviceBulkDeleteView.as_view(), name='device_bulk_delete'),
     path('devices/<int:pk>/', views.DeviceView.as_view(), name='device'),
     path('devices/<int:pk>/', views.DeviceView.as_view(), name='device'),
     path('devices/<int:pk>/edit/', views.DeviceEditView.as_view(), name='device_edit'),
     path('devices/<int:pk>/edit/', views.DeviceEditView.as_view(), name='device_edit'),

+ 6 - 0
netbox/dcim/views.py

@@ -1784,6 +1784,12 @@ class DeviceBulkDeleteView(generic.BulkDeleteView):
     table = tables.DeviceTable
     table = tables.DeviceTable
 
 
 
 
+class DeviceBulkRenameView(generic.BulkRenameView):
+    queryset = Device.objects.all()
+    filterset = filtersets.DeviceFilterSet
+    table = tables.DeviceTable
+
+
 #
 #
 # Devices
 # Devices
 #
 #

+ 1 - 1
netbox/netbox/views/generic/bulk_views.py

@@ -633,7 +633,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
             replace = form.cleaned_data['replace']
             replace = form.cleaned_data['replace']
             if form.cleaned_data['use_regex']:
             if form.cleaned_data['use_regex']:
                 try:
                 try:
-                    obj.new_name = re.sub(find, replace, obj.name)
+                    obj.new_name = re.sub(find, replace, obj.name or '')
                 # Catch regex group reference errors
                 # Catch regex group reference errors
                 except re.error:
                 except re.error:
                     obj.new_name = obj.name
                     obj.new_name = obj.name

+ 3 - 0
netbox/templates/dcim/device_list.html

@@ -2,6 +2,9 @@
 
 
 {% block bulk_buttons %}
 {% block bulk_buttons %}
   {% if perms.dcim.change_device %}
   {% if perms.dcim.change_device %}
+    <button type="submit" name="_rename" formaction="{% url 'dcim:device_bulk_rename' %}?return_url={% url 'dcim:device_list' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-outline-warning btn-sm">
+      <i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename
+    </button>
     <div class="dropdown">
     <div class="dropdown">
       <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
       <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
         <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add Components
         <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add Components