From 085cfc58f493cb314f2d714c00d7ae8e75a7136a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 7 Apr 2023 10:25:36 -0400 Subject: [PATCH] Fixes #12184: Fix filtered bulk deletion for various models --- docs/release-notes/version-3.4.md | 1 + netbox/circuits/views.py | 1 + netbox/dcim/views.py | 6 ++++++ netbox/extras/views.py | 1 + netbox/ipam/views.py | 1 + netbox/netbox/views/generic/bulk_views.py | 1 - netbox/tenancy/views.py | 3 +++ netbox/virtualization/views.py | 2 ++ 8 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.4.md b/docs/release-notes/version-3.4.md index b913a252a..eb25591db 100644 --- a/docs/release-notes/version-3.4.md +++ b/docs/release-notes/version-3.4.md @@ -14,6 +14,7 @@ * [#12084](https://github.com/netbox-community/netbox/issues/12084) - Fix exception when attempting to create a saved filter for applied filters * [#12087](https://github.com/netbox-community/netbox/issues/12087) - Fix bulk editing of many-to-many relationships * [#12117](https://github.com/netbox-community/netbox/issues/12117) - Hide clone button for objects with no clonable attributes +* [#12184](https://github.com/netbox-community/netbox/issues/12184) - Fix filtered bulk deletion for various models * [#12190](https://github.com/netbox-community/netbox/issues/12190) - Fix form layout for plugin textarea fields --- diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 3168509ba..461113147 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -196,6 +196,7 @@ class CircuitTypeBulkDeleteView(generic.BulkDeleteView): queryset = CircuitType.objects.annotate( circuit_count=count_related(Circuit, 'type') ) + filterset = filtersets.CircuitTypeFilterSet table = tables.CircuitTypeTable diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 9b49e799c..5a6261eba 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -628,6 +628,7 @@ class RackRoleBulkDeleteView(generic.BulkDeleteView): queryset = RackRole.objects.annotate( rack_count=count_related(Rack, 'role') ) + filterset = filtersets.RackRoleFilterSet table = tables.RackRoleTable @@ -909,6 +910,7 @@ class ManufacturerBulkDeleteView(generic.BulkDeleteView): queryset = Manufacturer.objects.annotate( devicetype_count=count_related(DeviceType, 'manufacturer') ) + filterset = filtersets.ManufacturerFilterSet table = tables.ManufacturerTable @@ -1808,6 +1810,7 @@ class DeviceRoleBulkDeleteView(generic.BulkDeleteView): device_count=count_related(Device, 'device_role'), vm_count=count_related(VirtualMachine, 'role') ) + filterset = filtersets.DeviceRoleFilterSet table = tables.DeviceRoleTable @@ -1868,6 +1871,7 @@ class PlatformBulkEditView(generic.BulkEditView): class PlatformBulkDeleteView(generic.BulkDeleteView): queryset = Platform.objects.all() + filterset = filtersets.PlatformFilterSet table = tables.PlatformTable @@ -2981,6 +2985,7 @@ class InventoryItemBulkRenameView(generic.BulkRenameView): class InventoryItemBulkDeleteView(generic.BulkDeleteView): queryset = InventoryItem.objects.all() + filterset = filtersets.InventoryItemFilterSet table = tables.InventoryItemTable template_name = 'dcim/inventoryitem_bulk_delete.html' @@ -3038,6 +3043,7 @@ class InventoryItemRoleBulkDeleteView(generic.BulkDeleteView): queryset = InventoryItemRole.objects.annotate( inventoryitem_count=count_related(InventoryItem, 'role'), ) + filterset = filtersets.InventoryItemRoleFilterSet table = tables.InventoryItemRoleTable diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 91d3b5c58..d8a3c377d 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -414,6 +414,7 @@ class ConfigContextDeleteView(generic.ObjectDeleteView): class ConfigContextBulkDeleteView(generic.BulkDeleteView): queryset = ConfigContext.objects.all() + filterset = filtersets.ConfigContextFilterSet table = tables.ConfigContextTable diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 130014f3f..5f10fb5a7 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -431,6 +431,7 @@ class RoleBulkEditView(generic.BulkEditView): class RoleBulkDeleteView(generic.BulkDeleteView): queryset = Role.objects.all() + filterset = filtersets.RoleFilterSet table = tables.RoleTable diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index c0efe3014..211b869e6 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -16,7 +16,6 @@ from django_tables2.export import TableExport from extras.models import ExportTemplate from extras.signals import clear_webhooks -from utilities.choices import ImportFormatChoices from utilities.error_handlers import handle_protectederror from utilities.exceptions import AbortRequest, AbortTransaction, PermissionsViolation from utilities.forms import BulkRenameForm, ConfirmationForm, ImportForm, restrict_form_fields diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index f4c9b6d04..3ee39f0a7 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -84,6 +84,7 @@ class TenantGroupBulkDeleteView(generic.BulkDeleteView): 'tenant_count', cumulative=True ) + filterset = filtersets.TenantGroupFilterSet table = tables.TenantGroupTable @@ -247,6 +248,7 @@ class ContactGroupBulkDeleteView(generic.BulkDeleteView): 'contact_count', cumulative=True ) + filterset = filtersets.ContactGroupFilterSet table = tables.ContactGroupTable @@ -305,6 +307,7 @@ class ContactRoleBulkEditView(generic.BulkEditView): class ContactRoleBulkDeleteView(generic.BulkDeleteView): queryset = ContactRole.objects.all() + filterset = filtersets.ContactRoleFilterSet table = tables.ContactRoleTable diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index af130fcce..1ff21f1e0 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -80,6 +80,7 @@ class ClusterTypeBulkDeleteView(generic.BulkDeleteView): queryset = ClusterType.objects.annotate( cluster_count=count_related(Cluster, 'type') ) + filterset = filtersets.ClusterTypeFilterSet table = tables.ClusterTypeTable @@ -147,6 +148,7 @@ class ClusterGroupBulkDeleteView(generic.BulkDeleteView): queryset = ClusterGroup.objects.annotate( cluster_count=count_related(Cluster, 'group') ) + filterset = filtersets.ClusterGroupFilterSet table = tables.ClusterGroupTable