Transition BulkDeleteView to use ObjectPermissionRequiredMixin

This commit is contained in:
Jeremy Stretch 2020-05-21 15:14:29 -04:00
parent 82c247f3cf
commit 8fd860a413
8 changed files with 59 additions and 111 deletions

View File

@ -86,8 +86,7 @@ class ProviderBulkEditView(BulkEditView):
default_return_url = 'circuits:provider_list' default_return_url = 'circuits:provider_list'
class ProviderBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ProviderBulkDeleteView(BulkDeleteView):
permission_required = 'circuits.delete_provider'
queryset = Provider.objects.annotate(count_circuits=Count('circuits')) queryset = Provider.objects.annotate(count_circuits=Count('circuits'))
filterset = filters.ProviderFilterSet filterset = filters.ProviderFilterSet
table = tables.ProviderTable table = tables.ProviderTable
@ -116,8 +115,7 @@ class CircuitTypeBulkImportView(BulkImportView):
default_return_url = 'circuits:circuittype_list' default_return_url = 'circuits:circuittype_list'
class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class CircuitTypeBulkDeleteView(BulkDeleteView):
permission_required = 'circuits.delete_circuittype'
queryset = CircuitType.objects.annotate(circuit_count=Count('circuits')) queryset = CircuitType.objects.annotate(circuit_count=Count('circuits'))
table = tables.CircuitTypeTable table = tables.CircuitTypeTable
default_return_url = 'circuits:circuittype_list' default_return_url = 'circuits:circuittype_list'
@ -188,8 +186,7 @@ class CircuitBulkEditView(BulkEditView):
default_return_url = 'circuits:circuit_list' default_return_url = 'circuits:circuit_list'
class CircuitBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class CircuitBulkDeleteView(BulkDeleteView):
permission_required = 'circuits.delete_circuit'
queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant').prefetch_related('terminations__site') queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant').prefetch_related('terminations__site')
filterset = filters.CircuitFilterSet filterset = filters.CircuitFilterSet
table = tables.CircuitTable table = tables.CircuitTable

View File

@ -167,8 +167,7 @@ class RegionBulkImportView(BulkImportView):
default_return_url = 'dcim:region_list' default_return_url = 'dcim:region_list'
class RegionBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RegionBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_region'
queryset = Region.objects.all() queryset = Region.objects.all()
filterset = filters.RegionFilterSet filterset = filters.RegionFilterSet
table = tables.RegionTable table = tables.RegionTable
@ -239,8 +238,7 @@ class SiteBulkEditView(BulkEditView):
default_return_url = 'dcim:site_list' default_return_url = 'dcim:site_list'
class SiteBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class SiteBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_site'
queryset = Site.objects.prefetch_related('region', 'tenant') queryset = Site.objects.prefetch_related('region', 'tenant')
filterset = filters.SiteFilterSet filterset = filters.SiteFilterSet
table = tables.SiteTable table = tables.SiteTable
@ -277,8 +275,7 @@ class RackGroupBulkImportView(BulkImportView):
default_return_url = 'dcim:rackgroup_list' default_return_url = 'dcim:rackgroup_list'
class RackGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RackGroupBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_rackgroup'
queryset = RackGroup.objects.prefetch_related('site').annotate(rack_count=Count('racks')) queryset = RackGroup.objects.prefetch_related('site').annotate(rack_count=Count('racks'))
filterset = filters.RackGroupFilterSet filterset = filters.RackGroupFilterSet
table = tables.RackGroupTable table = tables.RackGroupTable
@ -307,8 +304,7 @@ class RackRoleBulkImportView(BulkImportView):
default_return_url = 'dcim:rackrole_list' default_return_url = 'dcim:rackrole_list'
class RackRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RackRoleBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_rackrole'
queryset = RackRole.objects.annotate(rack_count=Count('racks')) queryset = RackRole.objects.annotate(rack_count=Count('racks'))
table = tables.RackRoleTable table = tables.RackRoleTable
default_return_url = 'dcim:rackrole_list' default_return_url = 'dcim:rackrole_list'
@ -425,8 +421,7 @@ class RackBulkEditView(BulkEditView):
default_return_url = 'dcim:rack_list' default_return_url = 'dcim:rack_list'
class RackBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RackBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_rack'
queryset = Rack.objects.prefetch_related('site', 'group', 'tenant', 'role') queryset = Rack.objects.prefetch_related('site', 'group', 'tenant', 'role')
filterset = filters.RackFilterSet filterset = filters.RackFilterSet
table = tables.RackTable table = tables.RackTable
@ -501,8 +496,7 @@ class RackReservationBulkEditView(BulkEditView):
default_return_url = 'dcim:rackreservation_list' default_return_url = 'dcim:rackreservation_list'
class RackReservationBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RackReservationBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_rackreservation'
queryset = RackReservation.objects.prefetch_related('rack', 'user') queryset = RackReservation.objects.prefetch_related('rack', 'user')
filterset = filters.RackReservationFilterSet filterset = filters.RackReservationFilterSet
table = tables.RackReservationTable table = tables.RackReservationTable
@ -535,8 +529,7 @@ class ManufacturerBulkImportView(BulkImportView):
default_return_url = 'dcim:manufacturer_list' default_return_url = 'dcim:manufacturer_list'
class ManufacturerBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ManufacturerBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_manufacturer'
queryset = Manufacturer.objects.annotate(devicetype_count=Count('device_types')) queryset = Manufacturer.objects.annotate(devicetype_count=Count('device_types'))
table = tables.ManufacturerTable table = tables.ManufacturerTable
default_return_url = 'dcim:manufacturer_list' default_return_url = 'dcim:manufacturer_list'
@ -663,8 +656,7 @@ class DeviceTypeBulkEditView(BulkEditView):
default_return_url = 'dcim:devicetype_list' default_return_url = 'dcim:devicetype_list'
class DeviceTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class DeviceTypeBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_devicetype'
queryset = DeviceType.objects.prefetch_related('manufacturer').annotate(instance_count=Count('instances')) queryset = DeviceType.objects.prefetch_related('manufacturer').annotate(instance_count=Count('instances'))
filterset = filters.DeviceTypeFilterSet filterset = filters.DeviceTypeFilterSet
table = tables.DeviceTypeTable table = tables.DeviceTypeTable
@ -698,8 +690,7 @@ class ConsolePortTemplateBulkEditView(BulkEditView):
form = forms.ConsolePortTemplateBulkEditForm form = forms.ConsolePortTemplateBulkEditForm
class ConsolePortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ConsolePortTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_consoleporttemplate'
queryset = ConsolePortTemplate.objects.all() queryset = ConsolePortTemplate.objects.all()
table = tables.ConsolePortTemplateTable table = tables.ConsolePortTemplateTable
@ -731,8 +722,7 @@ class ConsoleServerPortTemplateBulkEditView(BulkEditView):
form = forms.ConsoleServerPortTemplateBulkEditForm form = forms.ConsoleServerPortTemplateBulkEditForm
class ConsoleServerPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ConsoleServerPortTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_consoleserverporttemplate'
queryset = ConsoleServerPortTemplate.objects.all() queryset = ConsoleServerPortTemplate.objects.all()
table = tables.ConsoleServerPortTemplateTable table = tables.ConsoleServerPortTemplateTable
@ -764,8 +754,7 @@ class PowerPortTemplateBulkEditView(BulkEditView):
form = forms.PowerPortTemplateBulkEditForm form = forms.PowerPortTemplateBulkEditForm
class PowerPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PowerPortTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_powerporttemplate'
queryset = PowerPortTemplate.objects.all() queryset = PowerPortTemplate.objects.all()
table = tables.PowerPortTemplateTable table = tables.PowerPortTemplateTable
@ -797,8 +786,7 @@ class PowerOutletTemplateBulkEditView(BulkEditView):
form = forms.PowerOutletTemplateBulkEditForm form = forms.PowerOutletTemplateBulkEditForm
class PowerOutletTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PowerOutletTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_poweroutlettemplate'
queryset = PowerOutletTemplate.objects.all() queryset = PowerOutletTemplate.objects.all()
table = tables.PowerOutletTemplateTable table = tables.PowerOutletTemplateTable
@ -830,8 +818,7 @@ class InterfaceTemplateBulkEditView(BulkEditView):
form = forms.InterfaceTemplateBulkEditForm form = forms.InterfaceTemplateBulkEditForm
class InterfaceTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class InterfaceTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_interfacetemplate'
queryset = InterfaceTemplate.objects.all() queryset = InterfaceTemplate.objects.all()
table = tables.InterfaceTemplateTable table = tables.InterfaceTemplateTable
@ -863,8 +850,7 @@ class FrontPortTemplateBulkEditView(BulkEditView):
form = forms.FrontPortTemplateBulkEditForm form = forms.FrontPortTemplateBulkEditForm
class FrontPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class FrontPortTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_frontporttemplate'
queryset = FrontPortTemplate.objects.all() queryset = FrontPortTemplate.objects.all()
table = tables.FrontPortTemplateTable table = tables.FrontPortTemplateTable
@ -896,8 +882,7 @@ class RearPortTemplateBulkEditView(BulkEditView):
form = forms.RearPortTemplateBulkEditForm form = forms.RearPortTemplateBulkEditForm
class RearPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RearPortTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_rearporttemplate'
queryset = RearPortTemplate.objects.all() queryset = RearPortTemplate.objects.all()
table = tables.RearPortTemplateTable table = tables.RearPortTemplateTable
@ -930,8 +915,7 @@ class DeviceBayTemplateDeleteView(ObjectDeleteView):
# form = forms.DeviceBayTemplateBulkEditForm # form = forms.DeviceBayTemplateBulkEditForm
class DeviceBayTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class DeviceBayTemplateBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_devicebaytemplate'
queryset = DeviceBayTemplate.objects.all() queryset = DeviceBayTemplate.objects.all()
table = tables.DeviceBayTemplateTable table = tables.DeviceBayTemplateTable
@ -958,8 +942,7 @@ class DeviceRoleBulkImportView(BulkImportView):
default_return_url = 'dcim:devicerole_list' default_return_url = 'dcim:devicerole_list'
class DeviceRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class DeviceRoleBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_devicerole'
queryset = DeviceRole.objects.all() queryset = DeviceRole.objects.all()
table = tables.DeviceRoleTable table = tables.DeviceRoleTable
default_return_url = 'dcim:devicerole_list' default_return_url = 'dcim:devicerole_list'
@ -987,8 +970,7 @@ class PlatformBulkImportView(BulkImportView):
default_return_url = 'dcim:platform_list' default_return_url = 'dcim:platform_list'
class PlatformBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PlatformBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_platform'
queryset = Platform.objects.all() queryset = Platform.objects.all()
table = tables.PlatformTable table = tables.PlatformTable
default_return_url = 'dcim:platform_list' default_return_url = 'dcim:platform_list'
@ -1201,8 +1183,7 @@ class DeviceBulkEditView(BulkEditView):
default_return_url = 'dcim:device_list' default_return_url = 'dcim:device_list'
class DeviceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class DeviceBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_device'
queryset = Device.objects.prefetch_related('tenant', 'site', 'rack', 'device_role', 'device_type__manufacturer') queryset = Device.objects.prefetch_related('tenant', 'site', 'rack', 'device_role', 'device_type__manufacturer')
filterset = filters.DeviceFilterSet filterset = filters.DeviceFilterSet
table = tables.DeviceTable table = tables.DeviceTable
@ -1252,8 +1233,7 @@ class ConsolePortBulkEditView(BulkEditView):
form = forms.ConsolePortBulkEditForm form = forms.ConsolePortBulkEditForm
class ConsolePortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ConsolePortBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_consoleport'
queryset = ConsolePort.objects.all() queryset = ConsolePort.objects.all()
filterset = filters.ConsolePortFilterSet filterset = filters.ConsolePortFilterSet
table = tables.ConsolePortTable table = tables.ConsolePortTable
@ -1315,8 +1295,7 @@ class ConsoleServerPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnec
form = forms.ConsoleServerPortBulkDisconnectForm form = forms.ConsoleServerPortBulkDisconnectForm
class ConsoleServerPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ConsoleServerPortBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_consoleserverport'
queryset = ConsoleServerPort.objects.all() queryset = ConsoleServerPort.objects.all()
filterset = filters.ConsoleServerPortFilterSet filterset = filters.ConsoleServerPortFilterSet
table = tables.ConsoleServerPortTable table = tables.ConsoleServerPortTable
@ -1366,8 +1345,7 @@ class PowerPortBulkEditView(BulkEditView):
form = forms.PowerPortBulkEditForm form = forms.PowerPortBulkEditForm
class PowerPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PowerPortBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_powerport'
queryset = PowerPort.objects.all() queryset = PowerPort.objects.all()
filterset = filters.PowerPortFilterSet filterset = filters.PowerPortFilterSet
table = tables.PowerPortTable table = tables.PowerPortTable
@ -1429,8 +1407,7 @@ class PowerOutletBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView)
form = forms.PowerOutletBulkDisconnectForm form = forms.PowerOutletBulkDisconnectForm
class PowerOutletBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PowerOutletBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_poweroutlet'
queryset = PowerOutlet.objects.all() queryset = PowerOutlet.objects.all()
filterset = filters.PowerOutletFilterSet filterset = filters.PowerOutletFilterSet
table = tables.PowerOutletTable table = tables.PowerOutletTable
@ -1529,8 +1506,7 @@ class InterfaceBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
form = forms.InterfaceBulkDisconnectForm form = forms.InterfaceBulkDisconnectForm
class InterfaceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class InterfaceBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_interface'
queryset = Interface.objects.all() queryset = Interface.objects.all()
filterset = filters.InterfaceFilterSet filterset = filters.InterfaceFilterSet
table = tables.InterfaceTable table = tables.InterfaceTable
@ -1592,8 +1568,7 @@ class FrontPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
form = forms.FrontPortBulkDisconnectForm form = forms.FrontPortBulkDisconnectForm
class FrontPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class FrontPortBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_frontport'
queryset = FrontPort.objects.all() queryset = FrontPort.objects.all()
filterset = filters.FrontPortFilterSet filterset = filters.FrontPortFilterSet
table = tables.FrontPortTable table = tables.FrontPortTable
@ -1655,8 +1630,7 @@ class RearPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
form = forms.RearPortBulkDisconnectForm form = forms.RearPortBulkDisconnectForm
class RearPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RearPortBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_rearport'
queryset = RearPort.objects.all() queryset = RearPort.objects.all()
filterset = filters.RearPortFilterSet filterset = filters.RearPortFilterSet
table = tables.RearPortTable table = tables.RearPortTable
@ -1783,8 +1757,7 @@ class DeviceBayBulkRenameView(PermissionRequiredMixin, BulkRenameView):
form = forms.DeviceBayBulkRenameForm form = forms.DeviceBayBulkRenameForm
class DeviceBayBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class DeviceBayBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_devicebay'
queryset = DeviceBay.objects.all() queryset = DeviceBay.objects.all()
filterset = filters.DeviceBayFilterSet filterset = filters.DeviceBayFilterSet
table = tables.DeviceBayTable table = tables.DeviceBayTable
@ -2048,8 +2021,7 @@ class CableBulkEditView(BulkEditView):
default_return_url = 'dcim:cable_list' default_return_url = 'dcim:cable_list'
class CableBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class CableBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_cable'
queryset = Cable.objects.prefetch_related('termination_a', 'termination_b') queryset = Cable.objects.prefetch_related('termination_a', 'termination_b')
filterset = filters.CableFilterSet filterset = filters.CableFilterSet
table = tables.CableTable table = tables.CableTable
@ -2203,8 +2175,7 @@ class InventoryItemBulkEditView(BulkEditView):
default_return_url = 'dcim:inventoryitem_list' default_return_url = 'dcim:inventoryitem_list'
class InventoryItemBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class InventoryItemBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_inventoryitem'
queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer') queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer')
table = tables.InventoryItemTable table = tables.InventoryItemTable
template_name = 'dcim/inventoryitem_bulk_delete.html' template_name = 'dcim/inventoryitem_bulk_delete.html'
@ -2468,8 +2439,7 @@ class VirtualChassisBulkEditView(BulkEditView):
default_return_url = 'dcim:virtualchassis_list' default_return_url = 'dcim:virtualchassis_list'
class VirtualChassisBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class VirtualChassisBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_virtualchassis'
queryset = VirtualChassis.objects.all() queryset = VirtualChassis.objects.all()
filterset = filters.VirtualChassisFilterSet filterset = filters.VirtualChassisFilterSet
table = tables.VirtualChassisTable table = tables.VirtualChassisTable
@ -2535,8 +2505,7 @@ class PowerPanelBulkEditView(BulkEditView):
default_return_url = 'dcim:powerpanel_list' default_return_url = 'dcim:powerpanel_list'
class PowerPanelBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PowerPanelBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_powerpanel'
queryset = PowerPanel.objects.prefetch_related( queryset = PowerPanel.objects.prefetch_related(
'site', 'rack_group' 'site', 'rack_group'
).annotate( ).annotate(
@ -2599,8 +2568,7 @@ class PowerFeedBulkEditView(BulkEditView):
default_return_url = 'dcim:powerfeed_list' default_return_url = 'dcim:powerfeed_list'
class PowerFeedBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PowerFeedBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_powerfeed'
queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack') queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack')
filterset = filters.PowerFeedFilterSet filterset = filters.PowerFeedFilterSet
table = tables.PowerFeedTable table = tables.PowerFeedTable

View File

@ -87,8 +87,7 @@ class TagBulkEditView(BulkEditView):
default_return_url = 'extras:tag_list' default_return_url = 'extras:tag_list'
class TagBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class TagBulkDeleteView(BulkDeleteView):
permission_required = 'extras.delete_tag'
queryset = Tag.objects.annotate( queryset = Tag.objects.annotate(
items=Count('extras_taggeditem_items') items=Count('extras_taggeditem_items')
).order_by( ).order_by(
@ -149,8 +148,7 @@ class ConfigContextDeleteView(ObjectDeleteView):
default_return_url = 'extras:configcontext_list' default_return_url = 'extras:configcontext_list'
class ConfigContextBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ConfigContextBulkDeleteView(BulkDeleteView):
permission_required = 'extras.delete_configcontext'
queryset = ConfigContext.objects.all() queryset = ConfigContext.objects.all()
table = ConfigContextTable table = ConfigContextTable
default_return_url = 'extras:configcontext_list' default_return_url = 'extras:configcontext_list'

View File

@ -161,8 +161,7 @@ class VRFBulkEditView(BulkEditView):
default_return_url = 'ipam:vrf_list' default_return_url = 'ipam:vrf_list'
class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class VRFBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_vrf'
queryset = VRF.objects.prefetch_related('tenant') queryset = VRF.objects.prefetch_related('tenant')
filterset = filters.VRFFilterSet filterset = filters.VRFFilterSet
table = tables.VRFTable table = tables.VRFTable
@ -262,8 +261,7 @@ class RIRBulkImportView(BulkImportView):
default_return_url = 'ipam:rir_list' default_return_url = 'ipam:rir_list'
class RIRBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RIRBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_rir'
queryset = RIR.objects.annotate(aggregate_count=Count('aggregates')) queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
filterset = filters.RIRFilterSet filterset = filters.RIRFilterSet
table = tables.RIRTable table = tables.RIRTable
@ -372,8 +370,7 @@ class AggregateBulkEditView(BulkEditView):
default_return_url = 'ipam:aggregate_list' default_return_url = 'ipam:aggregate_list'
class AggregateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class AggregateBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_aggregate'
queryset = Aggregate.objects.prefetch_related('rir') queryset = Aggregate.objects.prefetch_related('rir')
filterset = filters.AggregateFilterSet filterset = filters.AggregateFilterSet
table = tables.AggregateTable table = tables.AggregateTable
@ -402,8 +399,7 @@ class RoleBulkImportView(BulkImportView):
default_return_url = 'ipam:role_list' default_return_url = 'ipam:role_list'
class RoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class RoleBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_role'
queryset = Role.objects.all() queryset = Role.objects.all()
table = tables.RoleTable table = tables.RoleTable
default_return_url = 'ipam:role_list' default_return_url = 'ipam:role_list'
@ -585,8 +581,7 @@ class PrefixBulkEditView(BulkEditView):
default_return_url = 'ipam:prefix_list' default_return_url = 'ipam:prefix_list'
class PrefixBulkDeleteView(ObjectPermissionRequiredMixin, BulkDeleteView): class PrefixBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_prefix'
queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role') queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
filterset = filters.PrefixFilterSet filterset = filters.PrefixFilterSet
table = tables.PrefixTable table = tables.PrefixTable
@ -751,8 +746,7 @@ class IPAddressBulkEditView(BulkEditView):
default_return_url = 'ipam:ipaddress_list' default_return_url = 'ipam:ipaddress_list'
class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class IPAddressBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_ipaddress'
queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device') queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device')
filterset = filters.IPAddressFilterSet filterset = filters.IPAddressFilterSet
table = tables.IPAddressTable table = tables.IPAddressTable
@ -784,8 +778,7 @@ class VLANGroupBulkImportView(BulkImportView):
default_return_url = 'ipam:vlangroup_list' default_return_url = 'ipam:vlangroup_list'
class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class VLANGroupBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_vlangroup'
queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans')) queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
filterset = filters.VLANGroupFilterSet filterset = filters.VLANGroupFilterSet
table = tables.VLANGroupTable table = tables.VLANGroupTable
@ -908,8 +901,7 @@ class VLANBulkEditView(BulkEditView):
default_return_url = 'ipam:vlan_list' default_return_url = 'ipam:vlan_list'
class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class VLANBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_vlan'
queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role') queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
filterset = filters.VLANFilterSet filterset = filters.VLANFilterSet
table = tables.VLANTable table = tables.VLANTable
@ -975,8 +967,7 @@ class ServiceBulkEditView(BulkEditView):
default_return_url = 'ipam:service_list' default_return_url = 'ipam:service_list'
class ServiceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ServiceBulkDeleteView(BulkDeleteView):
permission_required = 'ipam.delete_service'
queryset = Service.objects.prefetch_related('device', 'virtual_machine') queryset = Service.objects.prefetch_related('device', 'virtual_machine')
filterset = filters.ServiceFilterSet filterset = filters.ServiceFilterSet
table = tables.ServiceTable table = tables.ServiceTable

View File

@ -48,8 +48,7 @@ class SecretRoleBulkImportView(BulkImportView):
default_return_url = 'secrets:secretrole_list' default_return_url = 'secrets:secretrole_list'
class SecretRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class SecretRoleBulkDeleteView(BulkDeleteView):
permission_required = 'secrets.delete_secretrole'
queryset = SecretRole.objects.annotate(secret_count=Count('secrets')) queryset = SecretRole.objects.annotate(secret_count=Count('secrets'))
table = tables.SecretRoleTable table = tables.SecretRoleTable
default_return_url = 'secrets:secretrole_list' default_return_url = 'secrets:secretrole_list'
@ -243,8 +242,7 @@ class SecretBulkEditView(BulkEditView):
default_return_url = 'secrets:secret_list' default_return_url = 'secrets:secret_list'
class SecretBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class SecretBulkDeleteView(BulkDeleteView):
permission_required = 'secrets.delete_secret'
queryset = Secret.objects.prefetch_related('role', 'device') queryset = Secret.objects.prefetch_related('role', 'device')
filterset = filters.SecretFilterSet filterset = filters.SecretFilterSet
table = tables.SecretTable table = tables.SecretTable

View File

@ -42,8 +42,7 @@ class TenantGroupBulkImportView(BulkImportView):
default_return_url = 'tenancy:tenantgroup_list' default_return_url = 'tenancy:tenantgroup_list'
class TenantGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class TenantGroupBulkDeleteView(BulkDeleteView):
permission_required = 'tenancy.delete_tenantgroup'
queryset = TenantGroup.objects.annotate(tenant_count=Count('tenants')) queryset = TenantGroup.objects.annotate(tenant_count=Count('tenants'))
table = tables.TenantGroupTable table = tables.TenantGroupTable
default_return_url = 'tenancy:tenantgroup_list' default_return_url = 'tenancy:tenantgroup_list'
@ -113,8 +112,7 @@ class TenantBulkEditView(BulkEditView):
default_return_url = 'tenancy:tenant_list' default_return_url = 'tenancy:tenant_list'
class TenantBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class TenantBulkDeleteView(BulkDeleteView):
permission_required = 'tenancy.delete_tenant'
queryset = Tenant.objects.prefetch_related('group') queryset = Tenant.objects.prefetch_related('group')
filterset = filters.TenantFilterSet filterset = filters.TenantFilterSet
table = tables.TenantTable table = tables.TenantTable

View File

@ -911,7 +911,7 @@ class BulkEditView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
}) })
class BulkDeleteView(GetReturnURLMixin, View): class BulkDeleteView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
""" """
Delete objects in bulk. Delete objects in bulk.
@ -927,6 +927,9 @@ class BulkDeleteView(GetReturnURLMixin, View):
form = None form = None
template_name = 'utilities/obj_bulk_delete.html' template_name = 'utilities/obj_bulk_delete.html'
def get_required_permission(self):
return get_permission_for_model(self.queryset.model, 'delete')
def get(self, request): def get(self, request):
return redirect(self.get_return_url(request)) return redirect(self.get_return_url(request))

View File

@ -40,8 +40,7 @@ class ClusterTypeBulkImportView(BulkImportView):
default_return_url = 'virtualization:clustertype_list' default_return_url = 'virtualization:clustertype_list'
class ClusterTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ClusterTypeBulkDeleteView(BulkDeleteView):
permission_required = 'virtualization.delete_clustertype'
queryset = ClusterType.objects.annotate(cluster_count=Count('clusters')) queryset = ClusterType.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterTypeTable table = tables.ClusterTypeTable
default_return_url = 'virtualization:clustertype_list' default_return_url = 'virtualization:clustertype_list'
@ -69,8 +68,7 @@ class ClusterGroupBulkImportView(BulkImportView):
default_return_url = 'virtualization:clustergroup_list' default_return_url = 'virtualization:clustergroup_list'
class ClusterGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ClusterGroupBulkDeleteView(BulkDeleteView):
permission_required = 'virtualization.delete_clustergroup'
queryset = ClusterGroup.objects.annotate(cluster_count=Count('clusters')) queryset = ClusterGroup.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterGroupTable table = tables.ClusterGroupTable
default_return_url = 'virtualization:clustergroup_list' default_return_url = 'virtualization:clustergroup_list'
@ -132,8 +130,7 @@ class ClusterBulkEditView(BulkEditView):
default_return_url = 'virtualization:cluster_list' default_return_url = 'virtualization:cluster_list'
class ClusterBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ClusterBulkDeleteView(BulkDeleteView):
permission_required = 'virtualization.delete_cluster'
queryset = Cluster.objects.prefetch_related('type', 'group', 'site') queryset = Cluster.objects.prefetch_related('type', 'group', 'site')
filterset = filters.ClusterFilterSet filterset = filters.ClusterFilterSet
table = tables.ClusterTable table = tables.ClusterTable
@ -285,8 +282,7 @@ class VirtualMachineBulkEditView(BulkEditView):
default_return_url = 'virtualization:virtualmachine_list' default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class VirtualMachineBulkDeleteView(BulkDeleteView):
permission_required = 'virtualization.delete_virtualmachine'
queryset = VirtualMachine.objects.prefetch_related('cluster', 'tenant', 'role') queryset = VirtualMachine.objects.prefetch_related('cluster', 'tenant', 'role')
filterset = filters.VirtualMachineFilterSet filterset = filters.VirtualMachineFilterSet
table = tables.VirtualMachineTable table = tables.VirtualMachineTable
@ -321,8 +317,7 @@ class InterfaceBulkEditView(BulkEditView):
form = forms.InterfaceBulkEditForm form = forms.InterfaceBulkEditForm
class InterfaceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class InterfaceBulkDeleteView(BulkDeleteView):
permission_required = 'dcim.delete_interface'
queryset = Interface.objects.all() queryset = Interface.objects.all()
table = tables.InterfaceTable table = tables.InterfaceTable