Преглед изворни кода

Closes #4807: Add bulk edit ability for device bay templates

Jeremy Stretch пре 5 година
родитељ
комит
88e3ac30b6

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

@@ -18,6 +18,7 @@ NetBox v2.9 replaces Django's built-in permissions framework with one that suppo
 * [#4792](https://github.com/netbox-community/netbox/issues/4792) - Add bulk rename capability for console and power ports
 * [#4793](https://github.com/netbox-community/netbox/issues/4793) - Add `description` field to device component templates
 * [#4795](https://github.com/netbox-community/netbox/issues/4795) - Add bulk disconnect capability for console and power ports
+* [#4807](https://github.com/netbox-community/netbox/issues/4807) - Add bulk edit ability for device bay templates
 
 ### Configuration Changes
 

+ 11 - 9
netbox/dcim/forms.py

@@ -1486,15 +1486,17 @@ class DeviceBayTemplateCreateForm(ComponentTemplateCreateForm):
     )
 
 
-# TODO: DeviceBayTemplate has no fields suitable for bulk-editing yet
-# class DeviceBayTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
-#     pk = forms.ModelMultipleChoiceField(
-#         queryset=FrontPortTemplate.objects.all(),
-#         widget=forms.MultipleHiddenInput()
-#     )
-#
-#     class Meta:
-#         nullable_fields = ()
+class DeviceBayTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
+    pk = forms.ModelMultipleChoiceField(
+        queryset=DeviceBayTemplate.objects.all(),
+        widget=forms.MultipleHiddenInput()
+    )
+    description = forms.CharField(
+        required=False
+    )
+
+    class Meta:
+        nullable_fields = ('description',)
 
 
 #

+ 5 - 8
netbox/dcim/tests/test_views.py

@@ -813,14 +813,7 @@ class RearPortTemplateTestCase(ViewTestCases.DeviceComponentTemplateViewTestCase
         }
 
 
-# TODO: Change base class to DeviceComponentTemplateViewTestCase
-# Blocked by absence of bulk edit view for DeviceBays
-class DeviceBayTemplateTestCase(
-    ViewTestCases.EditObjectViewTestCase,
-    ViewTestCases.DeleteObjectViewTestCase,
-    ViewTestCases.BulkCreateObjectsViewTestCase,
-    ViewTestCases.BulkDeleteObjectsViewTestCase
-):
+class DeviceBayTemplateTestCase(ViewTestCases.DeviceComponentTemplateViewTestCase):
     model = DeviceBayTemplate
 
     @classmethod
@@ -848,6 +841,10 @@ class DeviceBayTemplateTestCase(
             'name_pattern': 'Device Bay Template [4-6]',
         }
 
+        cls.bulk_edit_data = {
+            'description': 'Foo bar',
+        }
+
 
 class DeviceRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
     model = DeviceRole

+ 1 - 1
netbox/dcim/urls.py

@@ -142,7 +142,7 @@ urlpatterns = [
 
     # Device bay templates
     path('device-bay-templates/add/', views.DeviceBayTemplateCreateView.as_view(), name='devicebaytemplate_add'),
-    # path('device-bay-templates/edit/', views.DeviceBayTemplateBulkEditView.as_view(), name='devicebaytemplate_bulk_edit'),
+    path('device-bay-templates/edit/', views.DeviceBayTemplateBulkEditView.as_view(), name='devicebaytemplate_bulk_edit'),
     path('device-bay-templates/delete/', views.DeviceBayTemplateBulkDeleteView.as_view(), name='devicebaytemplate_bulk_delete'),
     path('device-bay-templates/<int:pk>/edit/', views.DeviceBayTemplateEditView.as_view(), name='devicebaytemplate_edit'),
     path('device-bay-templates/<int:pk>/delete/', views.DeviceBayTemplateDeleteView.as_view(), name='devicebaytemplate_delete'),

+ 4 - 4
netbox/dcim/views.py

@@ -867,10 +867,10 @@ class DeviceBayTemplateDeleteView(ObjectDeleteView):
     queryset = DeviceBayTemplate.objects.all()
 
 
-# class DeviceBayTemplateBulkEditView(BulkEditView):
-#     queryset = DeviceBayTemplate.objects.all()
-#     table = tables.DeviceBayTemplateTable
-#     form = forms.DeviceBayTemplateBulkEditForm
+class DeviceBayTemplateBulkEditView(BulkEditView):
+    queryset = DeviceBayTemplate.objects.all()
+    table = tables.DeviceBayTemplateTable
+    form = forms.DeviceBayTemplateBulkEditForm
 
 
 class DeviceBayTemplateBulkDeleteView(BulkDeleteView):

+ 1 - 1
netbox/templates/dcim/devicetype.html

@@ -173,7 +173,7 @@
 {% if devicetype.is_parent_device or devicebay_table.rows %}
     <div class="row">
         <div class="col-md-12">
-            {% include 'dcim/inc/devicetype_component_table.html' with table=devicebay_table title='Device Bays' add_url='dcim:devicebaytemplate_add' edit_url=None delete_url='dcim:devicebaytemplate_bulk_delete' %}
+            {% include 'dcim/inc/devicetype_component_table.html' with table=devicebay_table title='Device Bays' add_url='dcim:devicebaytemplate_add' edit_url='dcim:devicebaytemplate_bulk_edit' delete_url='dcim:devicebaytemplate_bulk_delete' %}
         </div>
     </div>
 {% endif %}