mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Transition ObjectDeleteView to use ObjectPermissionRequiredMixin
This commit is contained in:
@ -3,7 +3,7 @@ from django.contrib import messages
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from django.contrib.auth.mixins import PermissionRequiredMixin
|
||||
from django.db import transaction
|
||||
from django.db.models import Count, OuterRef, Subquery
|
||||
from django.db.models import Count, OuterRef
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.views.generic import View
|
||||
from django_tables2 import RequestConfig
|
||||
@ -66,8 +66,7 @@ class ProviderEditView(ObjectEditView):
|
||||
default_return_url = 'circuits:provider_list'
|
||||
|
||||
|
||||
class ProviderDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'circuits.delete_provider'
|
||||
class ProviderDeleteView(ObjectDeleteView):
|
||||
queryset = Provider.objects.all()
|
||||
default_return_url = 'circuits:provider_list'
|
||||
|
||||
@ -172,8 +171,7 @@ class CircuitEditView(ObjectEditView):
|
||||
default_return_url = 'circuits:circuit_list'
|
||||
|
||||
|
||||
class CircuitDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'circuits.delete_circuit'
|
||||
class CircuitDeleteView(ObjectDeleteView):
|
||||
queryset = Circuit.objects.all()
|
||||
default_return_url = 'circuits:circuit_list'
|
||||
|
||||
@ -270,6 +268,5 @@ class CircuitTerminationEditView(ObjectEditView):
|
||||
return obj.circuit.get_absolute_url()
|
||||
|
||||
|
||||
class CircuitTerminationDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'circuits.delete_circuittermination'
|
||||
class CircuitTerminationDeleteView(ObjectDeleteView):
|
||||
queryset = CircuitTermination.objects.all()
|
||||
|
@ -220,8 +220,7 @@ class SiteEditView(ObjectEditView):
|
||||
default_return_url = 'dcim:site_list'
|
||||
|
||||
|
||||
class SiteDeleteView(ObjectPermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_site'
|
||||
class SiteDeleteView(ObjectDeleteView):
|
||||
queryset = Site.objects.all()
|
||||
default_return_url = 'dcim:site_list'
|
||||
|
||||
@ -411,8 +410,7 @@ class RackEditView(ObjectEditView):
|
||||
default_return_url = 'dcim:rack_list'
|
||||
|
||||
|
||||
class RackDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_rack'
|
||||
class RackDeleteView(ObjectDeleteView):
|
||||
queryset = Rack.objects.all()
|
||||
default_return_url = 'dcim:rack_list'
|
||||
|
||||
@ -480,8 +478,7 @@ class RackReservationEditView(ObjectEditView):
|
||||
return obj
|
||||
|
||||
|
||||
class RackReservationDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_rackreservation'
|
||||
class RackReservationDeleteView(ObjectDeleteView):
|
||||
queryset = RackReservation.objects.all()
|
||||
default_return_url = 'dcim:rackreservation_list'
|
||||
|
||||
@ -636,8 +633,7 @@ class DeviceTypeEditView(ObjectEditView):
|
||||
default_return_url = 'dcim:devicetype_list'
|
||||
|
||||
|
||||
class DeviceTypeDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_devicetype'
|
||||
class DeviceTypeDeleteView(ObjectDeleteView):
|
||||
queryset = DeviceType.objects.all()
|
||||
default_return_url = 'dcim:devicetype_list'
|
||||
|
||||
@ -703,8 +699,7 @@ class ConsolePortTemplateEditView(ObjectEditView):
|
||||
model_form = forms.ConsolePortTemplateForm
|
||||
|
||||
|
||||
class ConsolePortTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_consoleporttemplate'
|
||||
class ConsolePortTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = ConsolePortTemplate.objects.all()
|
||||
|
||||
|
||||
@ -738,8 +733,7 @@ class ConsoleServerPortTemplateEditView(ObjectEditView):
|
||||
model_form = forms.ConsoleServerPortTemplateForm
|
||||
|
||||
|
||||
class ConsoleServerPortTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_consoleserverporttemplate'
|
||||
class ConsoleServerPortTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = ConsoleServerPortTemplate.objects.all()
|
||||
|
||||
|
||||
@ -773,8 +767,7 @@ class PowerPortTemplateEditView(ObjectEditView):
|
||||
model_form = forms.PowerPortTemplateForm
|
||||
|
||||
|
||||
class PowerPortTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_powerporttemplate'
|
||||
class PowerPortTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = PowerPortTemplate.objects.all()
|
||||
|
||||
|
||||
@ -808,8 +801,7 @@ class PowerOutletTemplateEditView(ObjectEditView):
|
||||
model_form = forms.PowerOutletTemplateForm
|
||||
|
||||
|
||||
class PowerOutletTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_poweroutlettemplate'
|
||||
class PowerOutletTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = PowerOutletTemplate.objects.all()
|
||||
|
||||
|
||||
@ -843,8 +835,7 @@ class InterfaceTemplateEditView(ObjectEditView):
|
||||
model_form = forms.InterfaceTemplateForm
|
||||
|
||||
|
||||
class InterfaceTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_interfacetemplate'
|
||||
class InterfaceTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = InterfaceTemplate.objects.all()
|
||||
|
||||
|
||||
@ -878,8 +869,7 @@ class FrontPortTemplateEditView(ObjectEditView):
|
||||
model_form = forms.FrontPortTemplateForm
|
||||
|
||||
|
||||
class FrontPortTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_frontporttemplate'
|
||||
class FrontPortTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = FrontPortTemplate.objects.all()
|
||||
|
||||
|
||||
@ -913,8 +903,7 @@ class RearPortTemplateEditView(ObjectEditView):
|
||||
model_form = forms.RearPortTemplateForm
|
||||
|
||||
|
||||
class RearPortTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_rearporttemplate'
|
||||
class RearPortTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = RearPortTemplate.objects.all()
|
||||
|
||||
|
||||
@ -948,8 +937,7 @@ class DeviceBayTemplateEditView(ObjectEditView):
|
||||
model_form = forms.DeviceBayTemplateForm
|
||||
|
||||
|
||||
class DeviceBayTemplateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_devicebaytemplate'
|
||||
class DeviceBayTemplateDeleteView(ObjectDeleteView):
|
||||
queryset = DeviceBayTemplate.objects.all()
|
||||
|
||||
|
||||
@ -1193,8 +1181,7 @@ class DeviceEditView(ObjectEditView):
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
|
||||
class DeviceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_device'
|
||||
class DeviceDeleteView(ObjectDeleteView):
|
||||
queryset = Device.objects.all()
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1270,8 +1257,7 @@ class ConsolePortEditView(ObjectEditView):
|
||||
model_form = forms.ConsolePortForm
|
||||
|
||||
|
||||
class ConsolePortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_consoleport'
|
||||
class ConsolePortDeleteView(ObjectDeleteView):
|
||||
queryset = ConsolePort.objects.all()
|
||||
|
||||
|
||||
@ -1324,8 +1310,7 @@ class ConsoleServerPortEditView(ObjectEditView):
|
||||
model_form = forms.ConsoleServerPortForm
|
||||
|
||||
|
||||
class ConsoleServerPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_consoleserverport'
|
||||
class ConsoleServerPortDeleteView(ObjectDeleteView):
|
||||
queryset = ConsoleServerPort.objects.all()
|
||||
|
||||
|
||||
@ -1390,8 +1375,7 @@ class PowerPortEditView(ObjectEditView):
|
||||
model_form = forms.PowerPortForm
|
||||
|
||||
|
||||
class PowerPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_powerport'
|
||||
class PowerPortDeleteView(ObjectDeleteView):
|
||||
queryset = PowerPort.objects.all()
|
||||
|
||||
|
||||
@ -1444,8 +1428,7 @@ class PowerOutletEditView(ObjectEditView):
|
||||
model_form = forms.PowerOutletForm
|
||||
|
||||
|
||||
class PowerOutletDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_poweroutlet'
|
||||
class PowerOutletDeleteView(ObjectDeleteView):
|
||||
queryset = PowerOutlet.objects.all()
|
||||
|
||||
|
||||
@ -1547,8 +1530,7 @@ class InterfaceEditView(ObjectEditView):
|
||||
template_name = 'dcim/interface_edit.html'
|
||||
|
||||
|
||||
class InterfaceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_interface'
|
||||
class InterfaceDeleteView(ObjectDeleteView):
|
||||
queryset = Interface.objects.all()
|
||||
|
||||
|
||||
@ -1613,8 +1595,7 @@ class FrontPortEditView(ObjectEditView):
|
||||
model_form = forms.FrontPortForm
|
||||
|
||||
|
||||
class FrontPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_frontport'
|
||||
class FrontPortDeleteView(ObjectDeleteView):
|
||||
queryset = FrontPort.objects.all()
|
||||
|
||||
|
||||
@ -1679,8 +1660,7 @@ class RearPortEditView(ObjectEditView):
|
||||
model_form = forms.RearPortForm
|
||||
|
||||
|
||||
class RearPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_rearport'
|
||||
class RearPortDeleteView(ObjectDeleteView):
|
||||
queryset = RearPort.objects.all()
|
||||
|
||||
|
||||
@ -1747,8 +1727,7 @@ class DeviceBayEditView(ObjectEditView):
|
||||
model_form = forms.DeviceBayForm
|
||||
|
||||
|
||||
class DeviceBayDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_devicebay'
|
||||
class DeviceBayDeleteView(ObjectDeleteView):
|
||||
queryset = DeviceBay.objects.all()
|
||||
|
||||
|
||||
@ -2088,8 +2067,7 @@ class CableEditView(ObjectEditView):
|
||||
default_return_url = 'dcim:cable_list'
|
||||
|
||||
|
||||
class CableDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_cable'
|
||||
class CableDeleteView(ObjectDeleteView):
|
||||
queryset = Cable.objects.all()
|
||||
default_return_url = 'dcim:cable_list'
|
||||
|
||||
@ -2247,8 +2225,7 @@ class InventoryItemCreateView(PermissionRequiredMixin, ComponentCreateView):
|
||||
template_name = 'dcim/device_component_add.html'
|
||||
|
||||
|
||||
class InventoryItemDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_inventoryitem'
|
||||
class InventoryItemDeleteView(ObjectDeleteView):
|
||||
queryset = InventoryItem.objects.all()
|
||||
|
||||
|
||||
@ -2420,8 +2397,7 @@ class VirtualChassisEditView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
||||
})
|
||||
|
||||
|
||||
class VirtualChassisDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_virtualchassis'
|
||||
class VirtualChassisDeleteView(ObjectDeleteView):
|
||||
queryset = VirtualChassis.objects.all()
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -2583,8 +2559,7 @@ class PowerPanelEditView(ObjectEditView):
|
||||
default_return_url = 'dcim:powerpanel_list'
|
||||
|
||||
|
||||
class PowerPanelDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_powerpanel'
|
||||
class PowerPanelDeleteView(ObjectDeleteView):
|
||||
queryset = PowerPanel.objects.all()
|
||||
default_return_url = 'dcim:powerpanel_list'
|
||||
|
||||
@ -2650,8 +2625,7 @@ class PowerFeedEditView(ObjectEditView):
|
||||
default_return_url = 'dcim:powerfeed_list'
|
||||
|
||||
|
||||
class PowerFeedDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_powerfeed'
|
||||
class PowerFeedDeleteView(ObjectDeleteView):
|
||||
queryset = PowerFeed.objects.all()
|
||||
default_return_url = 'dcim:powerfeed_list'
|
||||
|
||||
|
@ -71,8 +71,7 @@ class TagEditView(ObjectEditView):
|
||||
template_name = 'extras/tag_edit.html'
|
||||
|
||||
|
||||
class TagDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'extras.delete_tag'
|
||||
class TagDeleteView(ObjectDeleteView):
|
||||
queryset = Tag.objects.all()
|
||||
default_return_url = 'extras:tag_list'
|
||||
|
||||
@ -147,8 +146,7 @@ class ConfigContextBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
default_return_url = 'extras:configcontext_list'
|
||||
|
||||
|
||||
class ConfigContextDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'extras.delete_configcontext'
|
||||
class ConfigContextDeleteView(ObjectDeleteView):
|
||||
queryset = ConfigContext.objects.all()
|
||||
default_return_url = 'extras:configcontext_list'
|
||||
|
||||
@ -310,8 +308,7 @@ class ImageAttachmentEditView(ObjectEditView):
|
||||
return imageattachment.parent.get_absolute_url()
|
||||
|
||||
|
||||
class ImageAttachmentDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'extras.delete_imageattachment'
|
||||
class ImageAttachmentDeleteView(ObjectDeleteView):
|
||||
queryset = ImageAttachment.objects.all()
|
||||
|
||||
def get_return_url(self, request, imageattachment):
|
||||
|
@ -141,8 +141,7 @@ class VRFEditView(ObjectEditView):
|
||||
default_return_url = 'ipam:vrf_list'
|
||||
|
||||
|
||||
class VRFDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'ipam.delete_vrf'
|
||||
class VRFDeleteView(ObjectDeleteView):
|
||||
queryset = VRF.objects.all()
|
||||
default_return_url = 'ipam:vrf_list'
|
||||
|
||||
@ -356,8 +355,7 @@ class AggregateEditView(ObjectEditView):
|
||||
default_return_url = 'ipam:aggregate_list'
|
||||
|
||||
|
||||
class AggregateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'ipam.delete_aggregate'
|
||||
class AggregateDeleteView(ObjectDeleteView):
|
||||
queryset = Aggregate.objects.all()
|
||||
default_return_url = 'ipam:aggregate_list'
|
||||
|
||||
@ -572,8 +570,7 @@ class PrefixEditView(ObjectEditView):
|
||||
default_return_url = 'ipam:prefix_list'
|
||||
|
||||
|
||||
class PrefixDeleteView(ObjectPermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'ipam.delete_prefix'
|
||||
class PrefixDeleteView(ObjectDeleteView):
|
||||
queryset = Prefix.objects.all()
|
||||
template_name = 'ipam/prefix_delete.html'
|
||||
default_return_url = 'ipam:prefix_list'
|
||||
@ -733,8 +730,7 @@ class IPAddressAssignView(PermissionRequiredMixin, View):
|
||||
})
|
||||
|
||||
|
||||
class IPAddressDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'ipam.delete_ipaddress'
|
||||
class IPAddressDeleteView(ObjectDeleteView):
|
||||
queryset = IPAddress.objects.all()
|
||||
default_return_url = 'ipam:ipaddress_list'
|
||||
|
||||
@ -903,8 +899,7 @@ class VLANEditView(ObjectEditView):
|
||||
default_return_url = 'ipam:vlan_list'
|
||||
|
||||
|
||||
class VLANDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'ipam.delete_vlan'
|
||||
class VLANDeleteView(ObjectDeleteView):
|
||||
queryset = VLAN.objects.all()
|
||||
default_return_url = 'ipam:vlan_list'
|
||||
|
||||
@ -982,8 +977,7 @@ class ServiceBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
default_return_url = 'ipam:service_list'
|
||||
|
||||
|
||||
class ServiceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'ipam.delete_service'
|
||||
class ServiceDeleteView(ObjectDeleteView):
|
||||
queryset = Service.objects.all()
|
||||
|
||||
|
||||
|
@ -183,8 +183,7 @@ def secret_edit(request, pk):
|
||||
})
|
||||
|
||||
|
||||
class SecretDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'secrets.delete_secret'
|
||||
class SecretDeleteView(ObjectDeleteView):
|
||||
queryset = Secret.objects.all()
|
||||
default_return_url = 'secrets:secret_list'
|
||||
|
||||
|
@ -94,8 +94,7 @@ class TenantEditView(ObjectEditView):
|
||||
default_return_url = 'tenancy:tenant_list'
|
||||
|
||||
|
||||
class TenantDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'tenancy.delete_tenant'
|
||||
class TenantDeleteView(ObjectDeleteView):
|
||||
queryset = Tenant.objects.all()
|
||||
default_return_url = 'tenancy:tenant_list'
|
||||
|
||||
|
@ -282,9 +282,9 @@ class ObjectEditView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
||||
"""
|
||||
Create or edit a single object.
|
||||
|
||||
queryset: The base queryset for the object being modified
|
||||
model_form: The form used to create or edit the object
|
||||
template_name: The name of the template
|
||||
:param queryset: The base queryset for the object being modified
|
||||
:param model_form: The form used to create or edit the object
|
||||
:param template_name: The name of the template
|
||||
"""
|
||||
queryset = None
|
||||
model_form = None
|
||||
@ -389,16 +389,19 @@ class ObjectEditView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
||||
})
|
||||
|
||||
|
||||
class ObjectDeleteView(GetReturnURLMixin, View):
|
||||
class ObjectDeleteView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
||||
"""
|
||||
Delete a single object.
|
||||
|
||||
queryset: The base queryset for the object being deleted
|
||||
template_name: The name of the template
|
||||
:param queryset: The base queryset for the object being deleted
|
||||
:param template_name: The name of the template
|
||||
"""
|
||||
queryset = None
|
||||
template_name = 'utilities/obj_delete.html'
|
||||
|
||||
def get_required_permission(self):
|
||||
return get_permission_for_model(self.queryset.model, 'delete')
|
||||
|
||||
def get_object(self, kwargs):
|
||||
# Look up object by slug if one has been provided. Otherwise, use PK.
|
||||
if 'slug' in kwargs:
|
||||
|
@ -114,8 +114,7 @@ class ClusterEditView(ObjectEditView):
|
||||
model_form = forms.ClusterForm
|
||||
|
||||
|
||||
class ClusterDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'virtualization.delete_cluster'
|
||||
class ClusterDeleteView(ObjectDeleteView):
|
||||
queryset = Cluster.objects.all()
|
||||
default_return_url = 'virtualization:cluster_list'
|
||||
|
||||
@ -270,8 +269,7 @@ class VirtualMachineEditView(ObjectEditView):
|
||||
default_return_url = 'virtualization:virtualmachine_list'
|
||||
|
||||
|
||||
class VirtualMachineDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'virtualization.delete_virtualmachine'
|
||||
class VirtualMachineDeleteView(ObjectDeleteView):
|
||||
queryset = VirtualMachine.objects.all()
|
||||
default_return_url = 'virtualization:virtualmachine_list'
|
||||
|
||||
@ -319,8 +317,7 @@ class InterfaceEditView(ObjectEditView):
|
||||
template_name = 'virtualization/interface_edit.html'
|
||||
|
||||
|
||||
class InterfaceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
permission_required = 'dcim.delete_interface'
|
||||
class InterfaceDeleteView(ObjectDeleteView):
|
||||
queryset = Interface.objects.all()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user