Browse Source

Standardized the use of return_url for ObjectDeleteView

Jeremy Stretch 8 years ago
parent
commit
3eb969de0c

+ 2 - 2
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):

+ 4 - 4
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):

+ 5 - 5
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):

+ 1 - 1
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')

+ 1 - 1
netbox/templates/circuits/inc/circuit_termination.html

@@ -15,7 +15,7 @@
                 </a>
             {% endif %}
             {% if termination and perms.circuits.delete_circuittermination %}
-                <a href="{% url 'circuits:circuittermination_delete' pk=termination.pk %}" class="btn btn-xs btn-danger">
+                <a href="{% url 'circuits:circuittermination_delete' pk=termination.pk %}?return_url={{ circuit.get_absolute_url }}" class="btn btn-xs btn-danger">
                     <span class="fa fa-trash" aria-hidden="true"></span> Delete
                 </a>
             {% endif %}

+ 7 - 7
netbox/templates/dcim/device_inventory.html

@@ -67,7 +67,7 @@
                                     <a href="{% url 'dcim:module_edit' pk=m.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
                                 {% endif %}
                                 {% if perms.dcim.delete_module %}
-                                    <a href="{% url 'dcim:module_delete' pk=m.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
+                                    <a href="{% url 'dcim:module_delete' pk=m.pk %}?return_url={% url 'dcim:device_inventory' pk=device.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
                                 {% endif %}
                             </td>
                         </tr>
@@ -80,10 +80,10 @@
                                 <td>{{ m2.serial }}</td>
                                 <td class="text-right">
                                     {% if perms.dcim.change_module %}
-                                        <a href="{% url 'dcim:module_edit' pk=m.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
+                                        <a href="{% url 'dcim:module_edit' pk=m2.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
                                     {% endif %}
                                     {% if perms.dcim.delete_module %}
-                                        <a href="{% url 'dcim:module_delete' pk=m.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
+                                        <a href="{% url 'dcim:module_delete' pk=m2.pk %}?return_url={% url 'dcim:device_inventory' pk=device.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
                                     {% endif %}
                                 </td>
                             </tr>
@@ -96,10 +96,10 @@
                                     <td>{{ m3.serial }}</td>
                                     <td class="text-right">
                                         {% if perms.dcim.change_module %}
-                                            <a href="{% url 'dcim:module_edit' pk=m.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
+                                            <a href="{% url 'dcim:module_edit' pk=m3.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
                                         {% endif %}
                                         {% if perms.dcim.delete_module %}
-                                            <a href="{% url 'dcim:module_delete' pk=m.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
+                                            <a href="{% url 'dcim:module_delete' pk=m3.pk %}?return_url={% url 'dcim:device_inventory' pk=device.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
                                         {% endif %}
                                     </td>
                                 </tr>
@@ -112,10 +112,10 @@
                                         <td>{{ m4.serial }}</td>
                                         <td class="text-right">
                                             {% if perms.dcim.change_module %}
-                                                <a href="{% url 'dcim:module_edit' pk=m.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
+                                                <a href="{% url 'dcim:module_edit' pk=m4.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
                                             {% endif %}
                                             {% if perms.dcim.delete_module %}
-                                                <a href="{% url 'dcim:module_delete' pk=m.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
+                                                <a href="{% url 'dcim:module_delete' pk=m4.pk %}?return_url={% url 'dcim:device_inventory' pk=device.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
                                             {% endif %}
                                         </td>
                                     </tr>

+ 1 - 1
netbox/templates/dcim/inc/consoleport.html

@@ -50,7 +50,7 @@
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
             {% else %}
-                <a href="{% url 'dcim:consoleport_delete' pk=cp.pk %}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:consoleport_delete' pk=cp.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete port"></i>
                 </a>
             {% endif %}

+ 1 - 1
netbox/templates/dcim/inc/consoleserverport.html

@@ -49,7 +49,7 @@
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
             {% else %}
-                <a href="{% url 'dcim:consoleserverport_delete' pk=csp.pk %}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:consoleserverport_delete' pk=csp.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete port"></i>
                 </a>
             {% endif %}

+ 1 - 1
netbox/templates/dcim/inc/devicebay.html

@@ -40,7 +40,7 @@
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
             {% else %}
-                <a href="{% url 'dcim:devicebay_delete' pk=devicebay.pk %}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:devicebay_delete' pk=devicebay.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete device bay"></i>
                 </a>
             {% endif %}

+ 1 - 1
netbox/templates/dcim/inc/interface.html

@@ -85,7 +85,7 @@
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
             {% else %}
-                <a href="{% url 'dcim:interface_delete' pk=iface.pk %}" class="btn btn-danger btn-xs" title="Delete interface">
+                <a href="{% url 'dcim:interface_delete' pk=iface.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs" title="Delete interface">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </a>
             {% endif %}

+ 1 - 1
netbox/templates/dcim/inc/poweroutlet.html

@@ -49,7 +49,7 @@
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
             {% else %}
-                <a href="{% url 'dcim:poweroutlet_delete' pk=po.pk %}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:poweroutlet_delete' pk=po.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete outlet"></i>
                 </a>
             {% endif %}

+ 1 - 1
netbox/templates/dcim/inc/powerport.html

@@ -50,7 +50,7 @@
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
             {% else %}
-                <a href="{% url 'dcim:powerport_delete' pk=pp.pk %}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:powerport_delete' pk=pp.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete port"></i>
                 </a>
             {% endif %}

+ 1 - 1
netbox/templates/dcim/inc/service.html

@@ -18,7 +18,7 @@
             </a>
         {% endif %}
         {% if perms.ipam.delete_service %}
-            <a href="{% url 'ipam:service_delete' pk=service.pk %}" class="btn btn-danger btn-xs">
+            <a href="{% url 'ipam:service_delete' pk=service.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                 <i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete service"></i>
             </a>
         {% endif %}

+ 1 - 1
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):

+ 6 - 9
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,