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

Fixes #2698: Remove pagination restriction on bulk component creation for devices/VMs

Jeremy Stretch пре 7 година
родитељ
комит
aca57ec281

+ 1 - 0
CHANGELOG.md

@@ -6,6 +6,7 @@ v2.5.2 (FUTURE)
 
 ## Bug Fixes
 
+* [#2698](https://github.com/digitalocean/netbox/issues/2698) - Remove pagination restriction on bulk component creation for devices/VMs
 * [#2707](https://github.com/digitalocean/netbox/issues/2707) - Correct permission evaluation for circuit termination cabling
 
 ---

+ 6 - 0
netbox/dcim/views.py

@@ -1530,6 +1530,7 @@ class DeviceBulkAddConsolePortView(PermissionRequiredMixin, BulkComponentCreateV
     form = forms.DeviceBulkAddComponentForm
     model = ConsolePort
     model_form = forms.ConsolePortForm
+    filter = filters.DeviceFilter
     table = tables.DeviceTable
     default_return_url = 'dcim:device_list'
 
@@ -1541,6 +1542,7 @@ class DeviceBulkAddConsoleServerPortView(PermissionRequiredMixin, BulkComponentC
     form = forms.DeviceBulkAddComponentForm
     model = ConsoleServerPort
     model_form = forms.ConsoleServerPortForm
+    filter = filters.DeviceFilter
     table = tables.DeviceTable
     default_return_url = 'dcim:device_list'
 
@@ -1552,6 +1554,7 @@ class DeviceBulkAddPowerPortView(PermissionRequiredMixin, BulkComponentCreateVie
     form = forms.DeviceBulkAddComponentForm
     model = PowerPort
     model_form = forms.PowerPortForm
+    filter = filters.DeviceFilter
     table = tables.DeviceTable
     default_return_url = 'dcim:device_list'
 
@@ -1563,6 +1566,7 @@ class DeviceBulkAddPowerOutletView(PermissionRequiredMixin, BulkComponentCreateV
     form = forms.DeviceBulkAddComponentForm
     model = PowerOutlet
     model_form = forms.PowerOutletForm
+    filter = filters.DeviceFilter
     table = tables.DeviceTable
     default_return_url = 'dcim:device_list'
 
@@ -1574,6 +1578,7 @@ class DeviceBulkAddInterfaceView(PermissionRequiredMixin, BulkComponentCreateVie
     form = forms.DeviceBulkAddInterfaceForm
     model = Interface
     model_form = forms.InterfaceForm
+    filter = filters.DeviceFilter
     table = tables.DeviceTable
     default_return_url = 'dcim:device_list'
 
@@ -1585,6 +1590,7 @@ class DeviceBulkAddDeviceBayView(PermissionRequiredMixin, BulkComponentCreateVie
     form = forms.DeviceBulkAddComponentForm
     model = DeviceBay
     model_form = forms.DeviceBayForm
+    filter = filters.DeviceFilter
     table = tables.DeviceTable
     default_return_url = 'dcim:device_list'
 

+ 3 - 2
netbox/templates/utilities/obj_bulk_add_component.html

@@ -2,7 +2,8 @@
 {% load form_helpers %}
 
 {% block content %}
-<h1>Add {{ component_name|title }}</h1>
+<h1>{% block title %}Add {{ model_name|title }}{% endblock %}</h1>
+<p>{{ table.rows|length }} {{ parent_model_name }} selected</p>
 <form action="." method="post" class="form form-horizontal">
     {% csrf_token %}
     {% if request.POST.return_url %}
@@ -27,7 +28,7 @@
                 </div>
             {% endif %}
             <div class="panel panel-default">
-                <div class="panel-heading"><strong>{{ component_name|title }} to Add</strong></div>
+                <div class="panel-heading"><strong>{{ model_name|title }} to Add</strong></div>
                 <div class="panel-body">
                     {% for field in form.visible_fields %}
                         {% render_field field %}

+ 8 - 4
netbox/utilities/views.py

@@ -789,9 +789,12 @@ class BulkComponentCreateView(GetReturnURLMixin, View):
 
     def post(self, request):
 
+        parent_model_name = self.parent_model._meta.verbose_name_plural
+        model_name = self.model._meta.verbose_name_plural
+
         # Are we editing *all* objects in the queryset or just a selected subset?
         if request.POST.get('_all') and self.filter is not None:
-            pk_list = [obj.pk for obj in self.filter(request.GET, self.model.objects.only('pk')).qs]
+            pk_list = [obj.pk for obj in self.filter(request.GET, self.parent_model.objects.only('pk')).qs]
         else:
             pk_list = [int(pk) for pk in request.POST.getlist('pk')]
 
@@ -829,9 +832,9 @@ class BulkComponentCreateView(GetReturnURLMixin, View):
 
                     messages.success(request, "Added {} {} to {} {}.".format(
                         len(new_components),
-                        self.model._meta.verbose_name_plural,
+                        model_name,
                         len(form.cleaned_data['pk']),
-                        self.parent_model._meta.verbose_name_plural
+                        parent_model_name
                     ))
                     return redirect(self.get_return_url(request))
 
@@ -840,7 +843,8 @@ class BulkComponentCreateView(GetReturnURLMixin, View):
 
         return render(request, self.template_name, {
             'form': form,
-            'component_name': self.model._meta.verbose_name_plural,
+            'parent_model_name': parent_model_name,
+            'model_name': model_name,
             'table': table,
             'return_url': self.get_return_url(request),
         })

+ 1 - 0
netbox/virtualization/views.py

@@ -369,5 +369,6 @@ class VirtualMachineBulkAddInterfaceView(PermissionRequiredMixin, BulkComponentC
     form = forms.VirtualMachineBulkAddInterfaceForm
     model = Interface
     model_form = forms.InterfaceForm
+    filter = filters.VirtualMachineFilter
     table = tables.VirtualMachineTable
     default_return_url = 'virtualization:virtualmachine_list'