From 3eb969de0caa8ef71ff8abeeef62c76cd09ffee2 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 18 Jan 2017 13:30:19 -0500 Subject: [PATCH] Standardized the use of return_url for ObjectDeleteView --- netbox/circuits/views.py | 4 ++-- netbox/dcim/views.py | 8 ++++---- netbox/ipam/views.py | 10 +++++----- netbox/secrets/views.py | 2 +- .../circuits/inc/circuit_termination.html | 2 +- netbox/templates/dcim/device_inventory.html | 14 +++++++------- netbox/templates/dcim/inc/consoleport.html | 2 +- netbox/templates/dcim/inc/consoleserverport.html | 2 +- netbox/templates/dcim/inc/devicebay.html | 2 +- netbox/templates/dcim/inc/interface.html | 2 +- netbox/templates/dcim/inc/poweroutlet.html | 2 +- netbox/templates/dcim/inc/powerport.html | 2 +- netbox/templates/dcim/inc/service.html | 2 +- netbox/tenancy/views.py | 2 +- netbox/utilities/views.py | 15 ++++++--------- 15 files changed, 34 insertions(+), 37 deletions(-) diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 9feb19ef6..4217ca673 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -52,7 +52,7 @@ class ProviderEditView(PermissionRequiredMixin, ObjectEditView): class ProviderDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'circuits.delete_provider' model = Provider - redirect_url = 'circuits:provider_list' + default_return_url = 'circuits:provider_list' class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView): @@ -140,7 +140,7 @@ class CircuitEditView(PermissionRequiredMixin, ObjectEditView): class CircuitDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'circuits.delete_circuit' model = Circuit - redirect_url = 'circuits:circuit_list' + default_return_url = 'circuits:circuit_list' class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView): diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index fa433259a..aac26821e 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -163,7 +163,7 @@ class SiteEditView(PermissionRequiredMixin, ObjectEditView): class SiteDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'dcim.delete_site' model = Site - redirect_url = 'dcim:site_list' + default_return_url = 'dcim:site_list' class SiteBulkImportView(PermissionRequiredMixin, BulkImportView): @@ -278,7 +278,7 @@ class RackEditView(PermissionRequiredMixin, ObjectEditView): class RackDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'dcim.delete_rack' model = Rack - redirect_url = 'dcim:rack_list' + default_return_url = 'dcim:rack_list' class RackBulkImportView(PermissionRequiredMixin, BulkImportView): @@ -401,7 +401,7 @@ class DeviceTypeEditView(PermissionRequiredMixin, ObjectEditView): class DeviceTypeDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'dcim.delete_devicetype' model = DeviceType - redirect_url = 'dcim:devicetype_list' + default_return_url = 'dcim:devicetype_list' class DeviceTypeBulkEditView(PermissionRequiredMixin, BulkEditView): @@ -671,7 +671,7 @@ class DeviceEditView(PermissionRequiredMixin, ObjectEditView): class DeviceDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'dcim.delete_device' model = Device - redirect_url = 'dcim:device_list' + default_return_url = 'dcim:device_list' class DeviceBulkImportView(PermissionRequiredMixin, BulkImportView): diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 3f991a7bc..e19e6c486 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -124,7 +124,7 @@ class VRFEditView(PermissionRequiredMixin, ObjectEditView): class VRFDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'ipam.delete_vrf' model = VRF - redirect_url = 'ipam:vrf_list' + default_return_url = 'ipam:vrf_list' class VRFBulkImportView(PermissionRequiredMixin, BulkImportView): @@ -313,7 +313,7 @@ class AggregateEditView(PermissionRequiredMixin, ObjectEditView): class AggregateDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'ipam.delete_aggregate' model = Aggregate - redirect_url = 'ipam:aggregate_list' + default_return_url = 'ipam:aggregate_list' class AggregateBulkImportView(PermissionRequiredMixin, BulkImportView): @@ -443,7 +443,7 @@ class PrefixEditView(PermissionRequiredMixin, ObjectEditView): class PrefixDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'ipam.delete_prefix' model = Prefix - redirect_url = 'ipam:prefix_list' + default_return_url = 'ipam:prefix_list' template_name = 'ipam/prefix_delete.html' @@ -609,7 +609,7 @@ class IPAddressEditView(PermissionRequiredMixin, ObjectEditView): class IPAddressDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'ipam.delete_ipaddress' model = IPAddress - redirect_url = 'ipam:ipaddress_list' + default_return_url = 'ipam:ipaddress_list' class IPAddressBulkAddView(PermissionRequiredMixin, BulkAddView): @@ -720,7 +720,7 @@ class VLANEditView(PermissionRequiredMixin, ObjectEditView): class VLANDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'ipam.delete_vlan' model = VLAN - redirect_url = 'ipam:vlan_list' + default_return_url = 'ipam:vlan_list' class VLANBulkImportView(PermissionRequiredMixin, BulkImportView): diff --git a/netbox/secrets/views.py b/netbox/secrets/views.py index 7880adfb2..6db711a72 100644 --- a/netbox/secrets/views.py +++ b/netbox/secrets/views.py @@ -151,7 +151,7 @@ def secret_edit(request, pk): class SecretDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'secrets.delete_secret' model = Secret - redirect_url = 'secrets:secret_list' + default_return_url = 'secrets:secret_list' @permission_required('secrets.add_secret') diff --git a/netbox/templates/circuits/inc/circuit_termination.html b/netbox/templates/circuits/inc/circuit_termination.html index 7c641975c..ba0f8b5fe 100644 --- a/netbox/templates/circuits/inc/circuit_termination.html +++ b/netbox/templates/circuits/inc/circuit_termination.html @@ -15,7 +15,7 @@ {% endif %} {% if termination and perms.circuits.delete_circuittermination %} - + Delete {% endif %} diff --git a/netbox/templates/dcim/device_inventory.html b/netbox/templates/dcim/device_inventory.html index 6e19d8fe8..a4fbe7170 100644 --- a/netbox/templates/dcim/device_inventory.html +++ b/netbox/templates/dcim/device_inventory.html @@ -67,7 +67,7 @@ {% endif %} {% if perms.dcim.delete_module %} - + {% endif %} @@ -80,10 +80,10 @@ {{ m2.serial }} {% if perms.dcim.change_module %} - + {% endif %} {% if perms.dcim.delete_module %} - + {% endif %} @@ -96,10 +96,10 @@ {{ m3.serial }} {% if perms.dcim.change_module %} - + {% endif %} {% if perms.dcim.delete_module %} - + {% endif %} @@ -112,10 +112,10 @@ {{ m4.serial }} {% if perms.dcim.change_module %} - + {% endif %} {% if perms.dcim.delete_module %} - + {% endif %} diff --git a/netbox/templates/dcim/inc/consoleport.html b/netbox/templates/dcim/inc/consoleport.html index e6c816780..ebe96a660 100644 --- a/netbox/templates/dcim/inc/consoleport.html +++ b/netbox/templates/dcim/inc/consoleport.html @@ -50,7 +50,7 @@ {% else %} - + {% endif %} diff --git a/netbox/templates/dcim/inc/consoleserverport.html b/netbox/templates/dcim/inc/consoleserverport.html index d3c923e43..848bb8f9d 100644 --- a/netbox/templates/dcim/inc/consoleserverport.html +++ b/netbox/templates/dcim/inc/consoleserverport.html @@ -49,7 +49,7 @@ {% else %} - + {% endif %} diff --git a/netbox/templates/dcim/inc/devicebay.html b/netbox/templates/dcim/inc/devicebay.html index eacb27440..bc0934283 100644 --- a/netbox/templates/dcim/inc/devicebay.html +++ b/netbox/templates/dcim/inc/devicebay.html @@ -40,7 +40,7 @@ {% else %} - + {% endif %} diff --git a/netbox/templates/dcim/inc/interface.html b/netbox/templates/dcim/inc/interface.html index bfb44b75d..d249b8b6e 100644 --- a/netbox/templates/dcim/inc/interface.html +++ b/netbox/templates/dcim/inc/interface.html @@ -85,7 +85,7 @@ {% else %} - + {% endif %} diff --git a/netbox/templates/dcim/inc/poweroutlet.html b/netbox/templates/dcim/inc/poweroutlet.html index 241ebc15c..929c9c903 100644 --- a/netbox/templates/dcim/inc/poweroutlet.html +++ b/netbox/templates/dcim/inc/poweroutlet.html @@ -49,7 +49,7 @@ {% else %} - + {% endif %} diff --git a/netbox/templates/dcim/inc/powerport.html b/netbox/templates/dcim/inc/powerport.html index aacb96839..c06d38b5a 100644 --- a/netbox/templates/dcim/inc/powerport.html +++ b/netbox/templates/dcim/inc/powerport.html @@ -50,7 +50,7 @@ {% else %} - + {% endif %} diff --git a/netbox/templates/dcim/inc/service.html b/netbox/templates/dcim/inc/service.html index 28cd64094..1e42a1811 100644 --- a/netbox/templates/dcim/inc/service.html +++ b/netbox/templates/dcim/inc/service.html @@ -18,7 +18,7 @@ {% endif %} {% if perms.ipam.delete_service %} - + {% endif %} diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index 821f6d7bf..768fa390d 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -89,7 +89,7 @@ class TenantEditView(PermissionRequiredMixin, ObjectEditView): class TenantDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'tenancy.delete_tenant' model = Tenant - redirect_url = 'tenancy:tenant_list' + default_return_url = 'tenancy:tenant_list' class TenantBulkImportView(PermissionRequiredMixin, BulkImportView): diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index bae8728bf..18b536d94 100644 --- a/netbox/utilities/views.py +++ b/netbox/utilities/views.py @@ -216,11 +216,11 @@ class ObjectDeleteView(View): model: The model of the object being edited template_name: The name of the template - redirect_url: Name of the URL to which the user is redirected after deleting the object + default_return_url: Name of the URL to which the user is redirected after deleting the object """ model = None template_name = 'utilities/obj_delete.html' - redirect_url = None + default_return_url = 'home' def get_object(self, kwargs): # Look up object by slug if one has been provided. Otherwise, use PK. @@ -232,8 +232,6 @@ class ObjectDeleteView(View): def get_cancel_url(self, obj): if hasattr(obj, 'get_absolute_url'): return obj.get_absolute_url() - if hasattr(obj, 'get_parent_url'): - return obj.get_parent_url() return reverse('home') def get(self, request, **kwargs): @@ -256,23 +254,22 @@ class ObjectDeleteView(View): obj = self.get_object(kwargs) form = ConfirmationForm(request.POST) if form.is_valid(): + try: obj.delete() except ProtectedError as e: handle_protectederror(obj, request, e) return redirect(obj.get_absolute_url()) + msg = u'Deleted {} {}'.format(self.model._meta.verbose_name, obj) messages.success(request, msg) UserAction.objects.log_delete(request.user, obj, msg) + return_url = form.cleaned_data['return_url'] if return_url and is_safe_url(url=return_url, host=request.get_host()): return redirect(return_url) - elif self.redirect_url: - return redirect(self.redirect_url) - elif hasattr(obj, 'get_parent_url'): - return redirect(obj.get_parent_url()) else: - return redirect('home') + return redirect(self.default_return_url) return render(request, self.template_name, { 'obj': obj,