فهرست منبع

#4416: Add bulk edit & delete views for VirtualChassis

Jeremy Stretch 5 سال پیش
والد
کامیت
d8cb58c746
4فایلهای تغییر یافته به همراه33 افزوده شده و 3 حذف شده
  1. 14 0
      netbox/dcim/forms.py
  2. 0 3
      netbox/dcim/tests/test_views.py
  3. 2 0
      netbox/dcim/urls.py
  4. 17 0
      netbox/dcim/views.py

+ 14 - 0
netbox/dcim/forms.py

@@ -4388,6 +4388,20 @@ class VCMemberSelectForm(BootstrapMixin, forms.Form):
         return device
         return device
 
 
 
 
+class VirtualChassisBulkEditForm(BootstrapMixin, BulkEditForm):
+    pk = forms.ModelMultipleChoiceField(
+        queryset=VirtualChassis.objects.all(),
+        widget=forms.MultipleHiddenInput()
+    )
+    domain = forms.CharField(
+        max_length=30,
+        required=False
+    )
+
+    class Meta:
+        nullable_fields = ['domain']
+
+
 class VirtualChassisFilterForm(BootstrapMixin, CustomFieldFilterForm):
 class VirtualChassisFilterForm(BootstrapMixin, CustomFieldFilterForm):
     model = VirtualChassis
     model = VirtualChassis
     q = forms.CharField(
     q = forms.CharField(

+ 0 - 3
netbox/dcim/tests/test_views.py

@@ -1507,10 +1507,7 @@ class VirtualChassisTestCase(ViewTestCases.PrimaryObjectViewTestCase):
     model = VirtualChassis
     model = VirtualChassis
 
 
     # Disable inapplicable tests
     # Disable inapplicable tests
-    test_get_object = None
     test_import_objects = None
     test_import_objects = None
-    test_bulk_edit_objects = None
-    test_bulk_delete_objects = None
 
 
     # TODO: Requires special form handling
     # TODO: Requires special form handling
     test_create_object = None
     test_create_object = None

+ 2 - 0
netbox/dcim/urls.py

@@ -321,6 +321,8 @@ urlpatterns = [
     # Virtual chassis
     # Virtual chassis
     path('virtual-chassis/', views.VirtualChassisListView.as_view(), name='virtualchassis_list'),
     path('virtual-chassis/', views.VirtualChassisListView.as_view(), name='virtualchassis_list'),
     path('virtual-chassis/add/', views.VirtualChassisCreateView.as_view(), name='virtualchassis_add'),
     path('virtual-chassis/add/', views.VirtualChassisCreateView.as_view(), name='virtualchassis_add'),
+    path('virtual-chassis/edit/', views.VirtualChassisBulkEditView.as_view(), name='virtualchassis_bulk_edit'),
+    path('virtual-chassis/delete/', views.VirtualChassisBulkDeleteView.as_view(), name='virtualchassis_bulk_delete'),
     path('virtual-chassis/<int:pk>/', views.VirtualChassisView.as_view(), name='virtualchassis'),
     path('virtual-chassis/<int:pk>/', views.VirtualChassisView.as_view(), name='virtualchassis'),
     path('virtual-chassis/<int:pk>/edit/', views.VirtualChassisEditView.as_view(), name='virtualchassis_edit'),
     path('virtual-chassis/<int:pk>/edit/', views.VirtualChassisEditView.as_view(), name='virtualchassis_edit'),
     path('virtual-chassis/<int:pk>/delete/', views.VirtualChassisDeleteView.as_view(), name='virtualchassis_delete'),
     path('virtual-chassis/<int:pk>/delete/', views.VirtualChassisDeleteView.as_view(), name='virtualchassis_delete'),

+ 17 - 0
netbox/dcim/views.py

@@ -2605,6 +2605,23 @@ class VirtualChassisRemoveMemberView(PermissionRequiredMixin, GetReturnURLMixin,
         })
         })
 
 
 
 
+class VirtualChassisBulkEditView(PermissionRequiredMixin, BulkEditView):
+    permission_required = 'dcim.change_virtualchassis'
+    queryset = VirtualChassis.objects.all()
+    filterset = filters.VirtualChassisFilterSet
+    table = tables.VirtualChassisTable
+    form = forms.VirtualChassisBulkEditForm
+    default_return_url = 'dcim:virtualchassis_list'
+
+
+class VirtualChassisBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
+    permission_required = 'dcim.delete_virtualchassis'
+    queryset = VirtualChassis.objects.all()
+    filterset = filters.VirtualChassisFilterSet
+    table = tables.VirtualChassisTable
+    default_return_url = 'dcim:virtualchassis_list'
+
+
 #
 #
 # Power panels
 # Power panels
 #
 #