diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a93302b0..2e191d934 100644 --- a/CHANGELOG.md +++ b/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 --- diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 632b58d23..1d74c1c85 100644 --- a/netbox/dcim/views.py +++ b/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' diff --git a/netbox/templates/utilities/obj_bulk_add_component.html b/netbox/templates/utilities/obj_bulk_add_component.html index 93c7060a4..fb9fb0418 100644 --- a/netbox/templates/utilities/obj_bulk_add_component.html +++ b/netbox/templates/utilities/obj_bulk_add_component.html @@ -2,7 +2,8 @@ {% load form_helpers %} {% block content %} -

Add {{ component_name|title }}

+

{% block title %}Add {{ model_name|title }}{% endblock %}

+

{{ table.rows|length }} {{ parent_model_name }} selected

{% csrf_token %} {% if request.POST.return_url %} @@ -27,7 +28,7 @@ {% endif %}
-
{{ component_name|title }} to Add
+
{{ model_name|title }} to Add
{% for field in form.visible_fields %} {% render_field field %} diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index ee13533bc..8838873de 100644 --- a/netbox/utilities/views.py +++ b/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), }) diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index b578cf455..aa8a585a9 100644 --- a/netbox/virtualization/views.py +++ b/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'