Browse Source

Standardized naming of return_url for all object views

Jeremy Stretch 8 years ago
parent
commit
52420945b2
42 changed files with 181 additions and 179 deletions
  1. 10 10
      netbox/circuits/views.py
  2. 51 45
      netbox/dcim/views.py
  3. 27 27
      netbox/ipam/views.py
  4. 6 6
      netbox/secrets/views.py
  5. 1 1
      netbox/templates/circuits/circuit_import.html
  6. 1 1
      netbox/templates/circuits/circuittermination_edit.html
  7. 1 1
      netbox/templates/circuits/provider_import.html
  8. 1 1
      netbox/templates/dcim/consoleport_connect.html
  9. 1 1
      netbox/templates/dcim/consoleserverport_connect.html
  10. 3 3
      netbox/templates/dcim/device_bulk_add_component.html
  11. 1 1
      netbox/templates/dcim/device_component_add.html
  12. 1 1
      netbox/templates/dcim/device_import.html
  13. 1 1
      netbox/templates/dcim/device_import_child.html
  14. 1 1
      netbox/templates/dcim/devicebay_populate.html
  15. 1 1
      netbox/templates/dcim/devicetype_component_add.html
  16. 1 1
      netbox/templates/dcim/inc/consoleport.html
  17. 1 1
      netbox/templates/dcim/inc/consoleserverport.html
  18. 1 1
      netbox/templates/dcim/inc/devicebay.html
  19. 1 1
      netbox/templates/dcim/inc/interface.html
  20. 1 1
      netbox/templates/dcim/inc/poweroutlet.html
  21. 1 1
      netbox/templates/dcim/inc/powerport.html
  22. 1 1
      netbox/templates/dcim/interfaceconnection_edit.html
  23. 1 1
      netbox/templates/dcim/ipaddress_assign.html
  24. 1 1
      netbox/templates/dcim/poweroutlet_connect.html
  25. 1 1
      netbox/templates/dcim/powerport_connect.html
  26. 1 1
      netbox/templates/dcim/rack_import.html
  27. 1 1
      netbox/templates/dcim/site_import.html
  28. 1 1
      netbox/templates/ipam/aggregate_import.html
  29. 1 1
      netbox/templates/ipam/ipaddress_assign.html
  30. 1 1
      netbox/templates/ipam/ipaddress_import.html
  31. 1 1
      netbox/templates/ipam/prefix_import.html
  32. 1 1
      netbox/templates/ipam/vlan_import.html
  33. 1 1
      netbox/templates/ipam/vrf_import.html
  34. 1 1
      netbox/templates/secrets/secret_edit.html
  35. 1 1
      netbox/templates/secrets/secret_import.html
  36. 1 1
      netbox/templates/tenancy/tenant_import.html
  37. 3 3
      netbox/templates/utilities/bulk_edit_form.html
  38. 1 1
      netbox/templates/utilities/confirmation_form.html
  39. 1 1
      netbox/templates/utilities/obj_edit.html
  40. 1 1
      netbox/templates/utilities/obj_table.html
  41. 5 5
      netbox/tenancy/views.py
  42. 42 46
      netbox/utilities/views.py

+ 10 - 10
netbox/circuits/views.py

@@ -47,7 +47,7 @@ class ProviderEditView(PermissionRequiredMixin, ObjectEditView):
     model = Provider
     form_class = forms.ProviderForm
     template_name = 'circuits/provider_edit.html'
-    obj_list_url = 'circuits:provider_list'
+    default_return_url = 'circuits:provider_list'
 
 
 class ProviderDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -61,7 +61,7 @@ class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.ProviderImportForm
     table = tables.ProviderTable
     template_name = 'circuits/provider_import.html'
-    obj_list_url = 'circuits:provider_list'
+    default_return_url = 'circuits:provider_list'
 
 
 class ProviderBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -70,14 +70,14 @@ class ProviderBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.ProviderFilter
     form = forms.ProviderBulkEditForm
     template_name = 'circuits/provider_bulk_edit.html'
-    default_redirect_url = 'circuits:provider_list'
+    default_return_url = 'circuits:provider_list'
 
 
 class ProviderBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'circuits.delete_provider'
     cls = Provider
     filter = filters.ProviderFilter
-    default_redirect_url = 'circuits:provider_list'
+    default_return_url = 'circuits:provider_list'
 
 
 #
@@ -103,7 +103,7 @@ class CircuitTypeEditView(PermissionRequiredMixin, ObjectEditView):
 class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'circuits.delete_circuittype'
     cls = CircuitType
-    default_redirect_url = 'circuits:circuittype_list'
+    default_return_url = 'circuits:circuittype_list'
 
 
 #
@@ -138,7 +138,7 @@ class CircuitEditView(PermissionRequiredMixin, ObjectEditView):
     form_class = forms.CircuitForm
     fields_initial = ['provider']
     template_name = 'circuits/circuit_edit.html'
-    obj_list_url = 'circuits:circuit_list'
+    default_return_url = 'circuits:circuit_list'
 
 
 class CircuitDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -152,7 +152,7 @@ class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.CircuitImportForm
     table = tables.CircuitTable
     template_name = 'circuits/circuit_import.html'
-    obj_list_url = 'circuits:circuit_list'
+    default_return_url = 'circuits:circuit_list'
 
 
 class CircuitBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -161,14 +161,14 @@ class CircuitBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.CircuitFilter
     form = forms.CircuitBulkEditForm
     template_name = 'circuits/circuit_bulk_edit.html'
-    default_redirect_url = 'circuits:circuit_list'
+    default_return_url = 'circuits:circuit_list'
 
 
 class CircuitBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'circuits.delete_circuit'
     cls = Circuit
     filter = filters.CircuitFilter
-    default_redirect_url = 'circuits:circuit_list'
+    default_return_url = 'circuits:circuit_list'
 
 
 @permission_required('circuits.change_circuittermination')
@@ -212,7 +212,7 @@ def circuit_terminations_swap(request, pk):
         'form': form,
         'panel_class': 'default',
         'button_class': 'primary',
-        'cancel_url': circuit.get_absolute_url(),
+        'return_url': circuit.get_absolute_url(),
     })
 
 

+ 51 - 45
netbox/dcim/views.py

@@ -71,7 +71,7 @@ class ComponentCreateView(View):
             'parent': parent,
             'component_type': self.model._meta.verbose_name,
             'form': self.form(initial=request.GET),
-            'cancel_url': parent.get_absolute_url(),
+            'return_url': parent.get_absolute_url(),
         })
 
     def post(self, request, pk):
@@ -112,7 +112,7 @@ class ComponentCreateView(View):
             'parent': parent,
             'component_type': self.model._meta.verbose_name,
             'form': form,
-            'cancel_url': parent.get_absolute_url(),
+            'return_url': parent.get_absolute_url(),
         })
 
 
@@ -122,6 +122,12 @@ class ComponentEditView(ObjectEditView):
         return obj.device.get_absolute_url()
 
 
+class ComponentDeleteView(ObjectDeleteView):
+
+    def get_return_url(self, obj):
+        return obj.device.get_absolute_url()
+
+
 #
 # Sites
 #
@@ -163,7 +169,7 @@ class SiteEditView(PermissionRequiredMixin, ObjectEditView):
     model = Site
     form_class = forms.SiteForm
     template_name = 'dcim/site_edit.html'
-    obj_list_url = 'dcim:site_list'
+    default_return_url = 'dcim:site_list'
 
 
 class SiteDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -177,7 +183,7 @@ class SiteBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.SiteImportForm
     table = tables.SiteTable
     template_name = 'dcim/site_import.html'
-    obj_list_url = 'dcim:site_list'
+    default_return_url = 'dcim:site_list'
 
 
 class SiteBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -186,7 +192,7 @@ class SiteBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.SiteFilter
     form = forms.SiteBulkEditForm
     template_name = 'dcim/site_bulk_edit.html'
-    default_redirect_url = 'dcim:site_list'
+    default_return_url = 'dcim:site_list'
 
 
 #
@@ -215,7 +221,7 @@ class RackGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_rackgroup'
     cls = RackGroup
     filter = filters.RackGroupFilter
-    default_redirect_url = 'dcim:rackgroup_list'
+    default_return_url = 'dcim:rackgroup_list'
 
 
 #
@@ -241,7 +247,7 @@ class RackRoleEditView(PermissionRequiredMixin, ObjectEditView):
 class RackRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_rackrole'
     cls = RackRole
-    default_redirect_url = 'dcim:rackrole_list'
+    default_return_url = 'dcim:rackrole_list'
 
 
 #
@@ -282,7 +288,7 @@ class RackEditView(PermissionRequiredMixin, ObjectEditView):
     model = Rack
     form_class = forms.RackForm
     template_name = 'dcim/rack_edit.html'
-    obj_list_url = 'dcim:rack_list'
+    default_return_url = 'dcim:rack_list'
 
 
 class RackDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -296,7 +302,7 @@ class RackBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.RackImportForm
     table = tables.RackImportTable
     template_name = 'dcim/rack_import.html'
-    obj_list_url = 'dcim:rack_list'
+    default_return_url = 'dcim:rack_list'
 
 
 class RackBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -305,14 +311,14 @@ class RackBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.RackFilter
     form = forms.RackBulkEditForm
     template_name = 'dcim/rack_bulk_edit.html'
-    default_redirect_url = 'dcim:rack_list'
+    default_return_url = 'dcim:rack_list'
 
 
 class RackBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_rack'
     cls = Rack
     filter = filters.RackFilter
-    default_redirect_url = 'dcim:rack_list'
+    default_return_url = 'dcim:rack_list'
 
 
 #
@@ -338,7 +344,7 @@ class ManufacturerEditView(PermissionRequiredMixin, ObjectEditView):
 class ManufacturerBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_manufacturer'
     cls = Manufacturer
-    default_redirect_url = 'dcim:manufacturer_list'
+    default_return_url = 'dcim:manufacturer_list'
 
 
 #
@@ -408,7 +414,7 @@ class DeviceTypeEditView(PermissionRequiredMixin, ObjectEditView):
     model = DeviceType
     form_class = forms.DeviceTypeForm
     template_name = 'dcim/devicetype_edit.html'
-    obj_list_url = 'dcim:devicetype_list'
+    default_return_url = 'dcim:devicetype_list'
 
 
 class DeviceTypeDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -423,14 +429,14 @@ class DeviceTypeBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.DeviceTypeFilter
     form = forms.DeviceTypeBulkEditForm
     template_name = 'dcim/devicetype_bulk_edit.html'
-    default_redirect_url = 'dcim:devicetype_list'
+    default_return_url = 'dcim:devicetype_list'
 
 
 class DeviceTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_devicetype'
     cls = DeviceType
     filter = filters.DeviceTypeFilter
-    default_redirect_url = 'dcim:devicetype_list'
+    default_return_url = 'dcim:devicetype_list'
 
 
 #
@@ -560,7 +566,7 @@ class DeviceRoleEditView(PermissionRequiredMixin, ObjectEditView):
 class DeviceRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_devicerole'
     cls = DeviceRole
-    default_redirect_url = 'dcim:devicerole_list'
+    default_return_url = 'dcim:devicerole_list'
 
 
 #
@@ -586,7 +592,7 @@ class PlatformEditView(PermissionRequiredMixin, ObjectEditView):
 class PlatformBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_platform'
     cls = Platform
-    default_redirect_url = 'dcim:platform_list'
+    default_return_url = 'dcim:platform_list'
 
 
 #
@@ -678,7 +684,7 @@ class DeviceEditView(PermissionRequiredMixin, ObjectEditView):
     form_class = forms.DeviceForm
     fields_initial = ['site', 'rack', 'position', 'face', 'device_bay']
     template_name = 'dcim/device_edit.html'
-    obj_list_url = 'dcim:device_list'
+    default_return_url = 'dcim:device_list'
 
 
 class DeviceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -692,7 +698,7 @@ class DeviceBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.DeviceImportForm
     table = tables.DeviceImportTable
     template_name = 'dcim/device_import.html'
-    obj_list_url = 'dcim:device_list'
+    default_return_url = 'dcim:device_list'
 
 
 class ChildDeviceBulkImportView(PermissionRequiredMixin, BulkImportView):
@@ -700,7 +706,7 @@ class ChildDeviceBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.ChildDeviceImportForm
     table = tables.DeviceImportTable
     template_name = 'dcim/device_import_child.html'
-    obj_list_url = 'dcim:device_list'
+    default_return_url = 'dcim:device_list'
 
     def save_obj(self, obj):
         # Inherent rack from parent device
@@ -718,14 +724,14 @@ class DeviceBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.DeviceFilter
     form = forms.DeviceBulkEditForm
     template_name = 'dcim/device_bulk_edit.html'
-    default_redirect_url = 'dcim:device_list'
+    default_return_url = 'dcim:device_list'
 
 
 class DeviceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'dcim.delete_device'
     cls = Device
     filter = filters.DeviceFilter
-    default_redirect_url = 'dcim:device_list'
+    default_return_url = 'dcim:device_list'
 
 
 def device_inventory(request, pk):
@@ -790,7 +796,7 @@ def consoleport_connect(request, pk):
     return render(request, 'dcim/consoleport_connect.html', {
         'consoleport': consoleport,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': consoleport.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': consoleport.device.pk}),
     })
 
 
@@ -819,7 +825,7 @@ def consoleport_disconnect(request, pk):
     return render(request, 'dcim/consoleport_disconnect.html', {
         'consoleport': consoleport,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': consoleport.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': consoleport.device.pk}),
     })
 
 
@@ -829,7 +835,7 @@ class ConsolePortEditView(PermissionRequiredMixin, ComponentEditView):
     form_class = forms.ConsolePortForm
 
 
-class ConsolePortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+class ConsolePortDeleteView(PermissionRequiredMixin, ComponentDeleteView):
     permission_required = 'dcim.delete_consoleport'
     model = ConsolePort
 
@@ -886,7 +892,7 @@ def consoleserverport_connect(request, pk):
     return render(request, 'dcim/consoleserverport_connect.html', {
         'consoleserverport': consoleserverport,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': consoleserverport.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': consoleserverport.device.pk}),
     })
 
 
@@ -916,7 +922,7 @@ def consoleserverport_disconnect(request, pk):
     return render(request, 'dcim/consoleserverport_disconnect.html', {
         'consoleserverport': consoleserverport,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': consoleserverport.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': consoleserverport.device.pk}),
     })
 
 
@@ -926,7 +932,7 @@ class ConsoleServerPortEditView(PermissionRequiredMixin, ComponentEditView):
     form_class = forms.ConsoleServerPortForm
 
 
-class ConsoleServerPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+class ConsoleServerPortDeleteView(PermissionRequiredMixin, ComponentDeleteView):
     permission_required = 'dcim.delete_consoleserverport'
     model = ConsoleServerPort
 
@@ -976,7 +982,7 @@ def powerport_connect(request, pk):
     return render(request, 'dcim/powerport_connect.html', {
         'powerport': powerport,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': powerport.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': powerport.device.pk}),
     })
 
 
@@ -1005,7 +1011,7 @@ def powerport_disconnect(request, pk):
     return render(request, 'dcim/powerport_disconnect.html', {
         'powerport': powerport,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': powerport.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': powerport.device.pk}),
     })
 
 
@@ -1015,7 +1021,7 @@ class PowerPortEditView(PermissionRequiredMixin, ComponentEditView):
     form_class = forms.PowerPortForm
 
 
-class PowerPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+class PowerPortDeleteView(PermissionRequiredMixin, ComponentDeleteView):
     permission_required = 'dcim.delete_powerport'
     model = PowerPort
 
@@ -1072,7 +1078,7 @@ def poweroutlet_connect(request, pk):
     return render(request, 'dcim/poweroutlet_connect.html', {
         'poweroutlet': poweroutlet,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': poweroutlet.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': poweroutlet.device.pk}),
     })
 
 
@@ -1101,7 +1107,7 @@ def poweroutlet_disconnect(request, pk):
     return render(request, 'dcim/poweroutlet_disconnect.html', {
         'poweroutlet': poweroutlet,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': poweroutlet.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': poweroutlet.device.pk}),
     })
 
 
@@ -1111,7 +1117,7 @@ class PowerOutletEditView(PermissionRequiredMixin, ComponentEditView):
     form_class = forms.PowerOutletForm
 
 
-class PowerOutletDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+class PowerOutletDeleteView(PermissionRequiredMixin, ComponentDeleteView):
     permission_required = 'dcim.delete_poweroutlet'
     model = PowerOutlet
 
@@ -1141,7 +1147,7 @@ class InterfaceEditView(PermissionRequiredMixin, ComponentEditView):
     form_class = forms.InterfaceForm
 
 
-class InterfaceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+class InterfaceDeleteView(PermissionRequiredMixin, ComponentDeleteView):
     permission_required = 'dcim.delete_interface'
     model = Interface
 
@@ -1179,7 +1185,7 @@ class DeviceBayEditView(PermissionRequiredMixin, ComponentEditView):
     form_class = forms.DeviceBayForm
 
 
-class DeviceBayDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+class DeviceBayDeleteView(PermissionRequiredMixin, ComponentDeleteView):
     permission_required = 'dcim.delete_devicebay'
     model = DeviceBay
 
@@ -1206,7 +1212,7 @@ def devicebay_populate(request, pk):
     return render(request, 'dcim/devicebay_populate.html', {
         'device_bay': device_bay,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': device_bay.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': device_bay.device.pk}),
     })
 
 
@@ -1230,7 +1236,7 @@ def devicebay_depopulate(request, pk):
     return render(request, 'dcim/devicebay_depopulate.html', {
         'device_bay': device_bay,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': device_bay.device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': device_bay.device.pk}),
     })
 
 
@@ -1305,7 +1311,7 @@ class DeviceBulkAddComponentView(View):
             'form': form,
             'component_name': self.model._meta.verbose_name_plural,
             'selected_devices': selected_devices,
-            'cancel_url': reverse('dcim:device_list'),
+            'return_url': reverse('dcim:device_list'),
         })
 
 
@@ -1387,7 +1393,7 @@ def interfaceconnection_add(request, pk):
     return render(request, 'dcim/interfaceconnection_edit.html', {
         'device': device,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
 
 
@@ -1419,15 +1425,15 @@ def interfaceconnection_delete(request, pk):
 
     # Determine where to direct user upon cancellation
     if device_id:
-        cancel_url = reverse('dcim:device', kwargs={'pk': device_id})
+        return_url = reverse('dcim:device', kwargs={'pk': device_id})
     else:
-        cancel_url = reverse('dcim:device_list')
+        return_url = reverse('dcim:device_list')
 
     return render(request, 'dcim/interfaceconnection_delete.html', {
         'interfaceconnection': interfaceconnection,
         'device_id': device_id,
         'form': form,
-        'cancel_url': cancel_url,
+        'return_url': return_url,
     })
 
 
@@ -1506,7 +1512,7 @@ def ipaddress_assign(request, pk):
     return render(request, 'dcim/ipaddress_assign.html', {
         'device': device,
         'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
+        'return_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
 
 
@@ -1525,6 +1531,6 @@ class ModuleEditView(PermissionRequiredMixin, ComponentEditView):
         return obj
 
 
-class ModuleDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+class ModuleDeleteView(PermissionRequiredMixin, ComponentDeleteView):
     permission_required = 'dcim.delete_module'
     model = Module

+ 27 - 27
netbox/ipam/views.py

@@ -118,7 +118,7 @@ class VRFEditView(PermissionRequiredMixin, ObjectEditView):
     model = VRF
     form_class = forms.VRFForm
     template_name = 'ipam/vrf_edit.html'
-    obj_list_url = 'ipam:vrf_list'
+    default_return_url = 'ipam:vrf_list'
 
 
 class VRFDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -132,7 +132,7 @@ class VRFBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.VRFImportForm
     table = tables.VRFTable
     template_name = 'ipam/vrf_import.html'
-    obj_list_url = 'ipam:vrf_list'
+    default_return_url = 'ipam:vrf_list'
 
 
 class VRFBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -141,14 +141,14 @@ class VRFBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.VRFFilter
     form = forms.VRFBulkEditForm
     template_name = 'ipam/vrf_bulk_edit.html'
-    default_redirect_url = 'ipam:vrf_list'
+    default_return_url = 'ipam:vrf_list'
 
 
 class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_vrf'
     cls = VRF
     filter = filters.VRFFilter
-    default_redirect_url = 'ipam:vrf_list'
+    default_return_url = 'ipam:vrf_list'
 
 
 #
@@ -253,7 +253,7 @@ class RIRBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_rir'
     cls = RIR
     filter = filters.RIRFilter
-    default_redirect_url = 'ipam:rir_list'
+    default_return_url = 'ipam:rir_list'
 
 
 #
@@ -311,7 +311,7 @@ class AggregateEditView(PermissionRequiredMixin, ObjectEditView):
     model = Aggregate
     form_class = forms.AggregateForm
     template_name = 'ipam/aggregate_edit.html'
-    obj_list_url = 'ipam:aggregate_list'
+    default_return_url = 'ipam:aggregate_list'
 
 
 class AggregateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -325,7 +325,7 @@ class AggregateBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.AggregateImportForm
     table = tables.AggregateTable
     template_name = 'ipam/aggregate_import.html'
-    obj_list_url = 'ipam:aggregate_list'
+    default_return_url = 'ipam:aggregate_list'
 
 
 class AggregateBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -334,14 +334,14 @@ class AggregateBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.AggregateFilter
     form = forms.AggregateBulkEditForm
     template_name = 'ipam/aggregate_bulk_edit.html'
-    default_redirect_url = 'ipam:aggregate_list'
+    default_return_url = 'ipam:aggregate_list'
 
 
 class AggregateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_aggregate'
     cls = Aggregate
     filter = filters.AggregateFilter
-    default_redirect_url = 'ipam:aggregate_list'
+    default_return_url = 'ipam:aggregate_list'
 
 
 #
@@ -367,7 +367,7 @@ class RoleEditView(PermissionRequiredMixin, ObjectEditView):
 class RoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_role'
     cls = Role
-    default_redirect_url = 'ipam:role_list'
+    default_return_url = 'ipam:role_list'
 
 
 #
@@ -444,14 +444,14 @@ class PrefixEditView(PermissionRequiredMixin, ObjectEditView):
     form_class = forms.PrefixForm
     template_name = 'ipam/prefix_edit.html'
     fields_initial = ['vrf', 'tenant', 'site', 'prefix', 'vlan']
-    obj_list_url = 'ipam:prefix_list'
+    default_return_url = 'ipam:prefix_list'
 
 
 class PrefixDeleteView(PermissionRequiredMixin, ObjectDeleteView):
     permission_required = 'ipam.delete_prefix'
     model = Prefix
-    default_return_url = 'ipam:prefix_list'
     template_name = 'ipam/prefix_delete.html'
+    default_return_url = 'ipam:prefix_list'
 
 
 class PrefixBulkImportView(PermissionRequiredMixin, BulkImportView):
@@ -459,7 +459,7 @@ class PrefixBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.PrefixImportForm
     table = tables.PrefixTable
     template_name = 'ipam/prefix_import.html'
-    obj_list_url = 'ipam:prefix_list'
+    default_return_url = 'ipam:prefix_list'
 
 
 class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -468,14 +468,14 @@ class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.PrefixFilter
     form = forms.PrefixBulkEditForm
     template_name = 'ipam/prefix_bulk_edit.html'
-    default_redirect_url = 'ipam:prefix_list'
+    default_return_url = 'ipam:prefix_list'
 
 
 class PrefixBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_prefix'
     cls = Prefix
     filter = filters.PrefixFilter
-    default_redirect_url = 'ipam:prefix_list'
+    default_return_url = 'ipam:prefix_list'
 
 
 def prefix_ipaddresses(request, pk):
@@ -569,7 +569,7 @@ def ipaddress_assign(request, pk):
     return render(request, 'ipam/ipaddress_assign.html', {
         'ipaddress': ipaddress,
         'form': form,
-        'cancel_url': reverse('ipam:ipaddress', kwargs={'pk': ipaddress.pk}),
+        'return_url': reverse('ipam:ipaddress', kwargs={'pk': ipaddress.pk}),
     })
 
 
@@ -602,7 +602,7 @@ def ipaddress_remove(request, pk):
     return render(request, 'ipam/ipaddress_unassign.html', {
         'ipaddress': ipaddress,
         'form': form,
-        'cancel_url': reverse('ipam:ipaddress', kwargs={'pk': ipaddress.pk}),
+        'return_url': reverse('ipam:ipaddress', kwargs={'pk': ipaddress.pk}),
     })
 
 
@@ -612,7 +612,7 @@ class IPAddressEditView(PermissionRequiredMixin, ObjectEditView):
     form_class = forms.IPAddressForm
     fields_initial = ['address', 'vrf']
     template_name = 'ipam/ipaddress_edit.html'
-    obj_list_url = 'ipam:ipaddress_list'
+    default_return_url = 'ipam:ipaddress_list'
 
 
 class IPAddressDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -626,7 +626,7 @@ class IPAddressBulkAddView(PermissionRequiredMixin, BulkAddView):
     form = forms.IPAddressBulkAddForm
     model = IPAddress
     template_name = 'ipam/ipaddress_bulk_add.html'
-    redirect_url = 'ipam:ipaddress_list'
+    default_return_url = 'ipam:ipaddress_list'
 
 
 class IPAddressBulkImportView(PermissionRequiredMixin, BulkImportView):
@@ -634,7 +634,7 @@ class IPAddressBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.IPAddressImportForm
     table = tables.IPAddressTable
     template_name = 'ipam/ipaddress_import.html'
-    obj_list_url = 'ipam:ipaddress_list'
+    default_return_url = 'ipam:ipaddress_list'
 
     def save_obj(self, obj):
         obj.save()
@@ -658,14 +658,14 @@ class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.IPAddressFilter
     form = forms.IPAddressBulkEditForm
     template_name = 'ipam/ipaddress_bulk_edit.html'
-    default_redirect_url = 'ipam:ipaddress_list'
+    default_return_url = 'ipam:ipaddress_list'
 
 
 class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_ipaddress'
     cls = IPAddress
     filter = filters.IPAddressFilter
-    default_redirect_url = 'ipam:ipaddress_list'
+    default_return_url = 'ipam:ipaddress_list'
 
 
 #
@@ -694,7 +694,7 @@ class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_vlangroup'
     cls = VLANGroup
     filter = filters.VLANGroupFilter
-    default_redirect_url = 'ipam:vlangroup_list'
+    default_return_url = 'ipam:vlangroup_list'
 
 
 #
@@ -727,7 +727,7 @@ class VLANEditView(PermissionRequiredMixin, ObjectEditView):
     model = VLAN
     form_class = forms.VLANForm
     template_name = 'ipam/vlan_edit.html'
-    obj_list_url = 'ipam:vlan_list'
+    default_return_url = 'ipam:vlan_list'
 
 
 class VLANDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -741,7 +741,7 @@ class VLANBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.VLANImportForm
     table = tables.VLANTable
     template_name = 'ipam/vlan_import.html'
-    obj_list_url = 'ipam:vlan_list'
+    default_return_url = 'ipam:vlan_list'
 
 
 class VLANBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -750,14 +750,14 @@ class VLANBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.VLANFilter
     form = forms.VLANBulkEditForm
     template_name = 'ipam/vlan_bulk_edit.html'
-    default_redirect_url = 'ipam:vlan_list'
+    default_return_url = 'ipam:vlan_list'
 
 
 class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_vlan'
     cls = VLAN
     filter = filters.VLANFilter
-    default_redirect_url = 'ipam:vlan_list'
+    default_return_url = 'ipam:vlan_list'
 
 
 #

+ 6 - 6
netbox/secrets/views.py

@@ -38,7 +38,7 @@ class SecretRoleEditView(PermissionRequiredMixin, ObjectEditView):
 class SecretRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'secrets.delete_secretrole'
     cls = SecretRole
-    default_redirect_url = 'secrets:secretrole_list'
+    default_return_url = 'secrets:secretrole_list'
 
 
 #
@@ -103,7 +103,7 @@ def secret_add(request, pk):
     return render(request, 'secrets/secret_edit.html', {
         'secret': secret,
         'form': form,
-        'cancel_url': device.get_absolute_url(),
+        'return_url': device.get_absolute_url(),
     })
 
 
@@ -145,7 +145,7 @@ def secret_edit(request, pk):
     return render(request, 'secrets/secret_edit.html', {
         'secret': secret,
         'form': form,
-        'cancel_url': reverse('secrets:secret', kwargs={'pk': secret.pk}),
+        'return_url': reverse('secrets:secret', kwargs={'pk': secret.pk}),
     })
 
 
@@ -195,7 +195,7 @@ def secret_import(request):
 
     return render(request, 'secrets/secret_import.html', {
         'form': form,
-        'cancel_url': reverse('secrets:secret_list'),
+        'return_url': reverse('secrets:secret_list'),
     })
 
 
@@ -205,11 +205,11 @@ class SecretBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.SecretFilter
     form = forms.SecretBulkEditForm
     template_name = 'secrets/secret_bulk_edit.html'
-    default_redirect_url = 'secrets:secret_list'
+    default_return_url = 'secrets:secret_list'
 
 
 class SecretBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'secrets.delete_secret'
     cls = Secret
     filter = filters.SecretFilter
-    default_redirect_url = 'secrets:secret_list'
+    default_return_url = 'secrets:secret_list'

+ 1 - 1
netbox/templates/circuits/circuit_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/circuits/circuittermination_edit.html

@@ -83,7 +83,7 @@
                 {% else %}
                     <button type="submit" name="_create" class="btn btn-primary">Create</button>
                 {% endif %}
-                <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
             </div>
         </div>
     </form>

+ 1 - 1
netbox/templates/circuits/provider_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/dcim/consoleport_connect.html

@@ -40,7 +40,7 @@
             <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_update" class="btn btn-primary">Connect</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
             </div>
         </div>

+ 1 - 1
netbox/templates/dcim/consoleserverport_connect.html

@@ -40,7 +40,7 @@
             <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_update" class="btn btn-primary">Connect</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
             </div>
         </div>

+ 3 - 3
netbox/templates/dcim/device_bulk_add_component.html

@@ -5,8 +5,8 @@
 <h1>Add {{ component_name|title }}</h1>
 <form action="." method="post" class="form form-horizontal">
     {% csrf_token %}
-    {% if request.POST.redirect_url %}
-        <input type="hidden" name="redirect_url" value="{{ request.POST.redirect_url }}" />
+    {% if request.POST.return_url %}
+        <input type="hidden" name="return_url" value="{{ request.POST.return_url }}" />
     {% endif %}
     {% for field in form.hidden_fields %}
         {{ field }}
@@ -51,7 +51,7 @@
 		    <div class="form-group text-right">
                 <div class="col-md-12">
                     <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
 		    </div>
         </div>

+ 1 - 1
netbox/templates/dcim/device_component_add.html

@@ -34,7 +34,7 @@
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_create" class="btn btn-primary">Create</button>
                     <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
 		    </div>
         </div>

+ 1 - 1
netbox/templates/dcim/device_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
             <div class="form-group">
                 <button type="submit" class="btn btn-primary">Submit</button>
-                <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+                <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
             </div>
 		</form>
 		<h4>CSV Format</h4>

+ 1 - 1
netbox/templates/dcim/device_import_child.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
             <div class="form-group">
                 <button type="submit" class="btn btn-primary">Submit</button>
-                <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+                <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
             </div>
 		</form>
 		<h4>CSV Format</h4>

+ 1 - 1
netbox/templates/dcim/devicebay_populate.html

@@ -37,7 +37,7 @@
 		    <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
 		    </div>
         </div>

+ 1 - 1
netbox/templates/dcim/devicetype_component_add.html

@@ -33,7 +33,7 @@
 		    <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
 		    </div>
         </div>

+ 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 %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:consoleport_delete' pk=cp.pk %}" 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 %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:consoleserverport_delete' pk=csp.pk %}" 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 %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:devicebay_delete' pk=devicebay.pk %}" 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 %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs" title="Delete interface">
+                <a href="{% url 'dcim:interface_delete' pk=iface.pk %}" 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 %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:poweroutlet_delete' pk=po.pk %}" 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 %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
+                <a href="{% url 'dcim:powerport_delete' pk=pp.pk %}" 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/interfaceconnection_edit.html

@@ -86,7 +86,7 @@
     <div class="form-group">
         <button type="submit" name="_create" class="btn btn-primary">Connect</button>
         <button type="submit" name="_addanother" class="btn btn-primary">Connect and Add Another</button>
-        <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+        <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
     </div>
 </div>
 </form>

+ 1 - 1
netbox/templates/dcim/ipaddress_assign.html

@@ -53,7 +53,7 @@
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_create" class="btn btn-primary">Create</button>
                     <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
 		    </div>
         </div>

+ 1 - 1
netbox/templates/dcim/poweroutlet_connect.html

@@ -40,7 +40,7 @@
             <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_update" class="btn btn-primary">Connect</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
             </div>
         </div>

+ 1 - 1
netbox/templates/dcim/powerport_connect.html

@@ -40,7 +40,7 @@
             <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_update" class="btn btn-primary">Connect</button>
-		            <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+		            <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
             </div>
         </div>

+ 1 - 1
netbox/templates/dcim/rack_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-                <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+                <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/dcim/site_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-                <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+                <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/ipam/aggregate_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/ipam/ipaddress_assign.html

@@ -59,7 +59,7 @@
 		    <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                     <button type="submit" name="_assign" class="btn btn-primary">Assign</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
 		    </div>
         </div>

+ 1 - 1
netbox/templates/ipam/ipaddress_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/ipam/prefix_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/ipam/vlan_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/ipam/vrf_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/secrets/secret_edit.html

@@ -59,7 +59,7 @@
                 {% else %}
                     <button type="submit" name="_create" class="btn btn-primary">Create</button>
                     <button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 {% endif %}
 		    </div>
         </div>

+ 1 - 1
netbox/templates/secrets/secret_import.html

@@ -22,7 +22,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+		        <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 1 - 1
netbox/templates/tenancy/tenant_import.html

@@ -13,7 +13,7 @@
 		    {% render_form form %}
 		    <div class="form-group">
 		        <button type="submit" class="btn btn-primary">Submit</button>
-		        <a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
+		        <a href="{% url return_url %}" class="btn btn-default">Cancel</a>
 		    </div>
 		</form>
 	</div>

+ 3 - 3
netbox/templates/utilities/bulk_edit_form.html

@@ -5,8 +5,8 @@
 <h1>{% block title %}{% endblock %}</h1>
 <form action="." method="post" class="form form-horizontal">
     {% csrf_token %}
-    {% if request.POST.redirect_url %}
-        <input type="hidden" name="redirect_url" value="{{ request.POST.redirect_url }}" />
+    {% if request.POST.return_url %}
+        <input type="hidden" name="return_url" value="{{ request.POST.return_url }}" />
     {% endif %}
     {% for field in form.hidden_fields %}
         {{ field }}
@@ -44,7 +44,7 @@
 		    <div class="form-group text-right">
                 <div class="col-md-12">
                     <button type="submit" name="_apply" class="btn btn-primary">Apply</button>
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                 </div>
 		    </div>
         </div>

+ 1 - 1
netbox/templates/utilities/confirmation_form.html

@@ -23,7 +23,7 @@
                     </div>
                     <div class="text-right">
                         <button type="submit" name="_confirm" class="btn btn-{{ button_class|default:"danger" }}">Confirm</button>
-                        <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                        <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
                     </div>
                 </div>
             </div>

+ 1 - 1
netbox/templates/utilities/obj_edit.html

@@ -37,7 +37,7 @@
                     <button type="submit" name="_create" class="btn btn-primary">Create</button>
                     <button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>
                 {% endif %}
-                <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
+                <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
             </div>
         </div>
     </form>

+ 1 - 1
netbox/templates/utilities/obj_table.html

@@ -3,7 +3,7 @@
 {% if table.model|user_can_change:request.user or table.model|user_can_delete:request.user %}
     <form method="post" class="form form-horizontal">
         {% csrf_token %}
-        <input type="hidden" name="redirect_url" value="{{ request.path }}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" />
+        <input type="hidden" name="return_url" value="{{ request.path }}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" />
         {% if table.paginator.num_pages > 1 %}
             <div id="select_all_box" class="hidden panel panel-default">
                 <div class="panel-body">

+ 5 - 5
netbox/tenancy/views.py

@@ -37,7 +37,7 @@ class TenantGroupEditView(PermissionRequiredMixin, ObjectEditView):
 class TenantGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'tenancy.delete_tenantgroup'
     cls = TenantGroup
-    default_redirect_url = 'tenancy:tenantgroup_list'
+    default_return_url = 'tenancy:tenantgroup_list'
 
 
 #
@@ -85,7 +85,7 @@ class TenantEditView(PermissionRequiredMixin, ObjectEditView):
     form_class = forms.TenantForm
     fields_initial = ['group']
     template_name = 'tenancy/tenant_edit.html'
-    obj_list_url = 'tenancy:tenant_list'
+    default_return_url = 'tenancy:tenant_list'
 
 
 class TenantDeleteView(PermissionRequiredMixin, ObjectDeleteView):
@@ -99,7 +99,7 @@ class TenantBulkImportView(PermissionRequiredMixin, BulkImportView):
     form = forms.TenantImportForm
     table = tables.TenantTable
     template_name = 'tenancy/tenant_import.html'
-    obj_list_url = 'tenancy:tenant_list'
+    default_return_url = 'tenancy:tenant_list'
 
 
 class TenantBulkEditView(PermissionRequiredMixin, BulkEditView):
@@ -108,11 +108,11 @@ class TenantBulkEditView(PermissionRequiredMixin, BulkEditView):
     filter = filters.TenantFilter
     form = forms.TenantBulkEditForm
     template_name = 'tenancy/tenant_bulk_edit.html'
-    default_redirect_url = 'tenancy:tenant_list'
+    default_return_url = 'tenancy:tenant_list'
 
 
 class TenantBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'tenancy.delete_tenant'
     cls = Tenant
     filter = filters.TenantFilter
-    default_redirect_url = 'tenancy:tenant_list'
+    default_return_url = 'tenancy:tenant_list'

+ 42 - 46
netbox/utilities/views.py

@@ -126,13 +126,13 @@ class ObjectEditView(View):
     form_class: The form used to create or edit the object
     fields_initial: A set of fields that will be prepopulated in the form from the request parameters
     template_name: The name of the template
-    obj_list_url: The name of the URL used to display a list of this object type
+    default_return_url: The name of the URL used to display a list of this object type
     """
     model = None
     form_class = None
     fields_initial = []
     template_name = 'utilities/obj_edit.html'
-    obj_list_url = None
+    default_return_url = 'home'
 
     def get_object(self, kwargs):
         # Look up object by slug or PK. Return None if neither was provided.
@@ -151,9 +151,7 @@ class ObjectEditView(View):
         # Determine where to redirect the user after updating an object (or aborting an update).
         if obj.pk and hasattr(obj, 'get_absolute_url'):
             return obj.get_absolute_url()
-        if self.obj_list_url is not None:
-            return reverse(self.obj_list_url)
-        return reverse('home')
+        return reverse(self.default_return_url)
 
     def get(self, request, *args, **kwargs):
 
@@ -166,7 +164,7 @@ class ObjectEditView(View):
             'obj': obj,
             'obj_type': self.model._meta.verbose_name,
             'form': form,
-            'cancel_url': self.get_return_url(obj),
+            'return_url': self.get_return_url(obj),
         })
 
     def post(self, request, *args, **kwargs):
@@ -203,7 +201,7 @@ class ObjectEditView(View):
             'obj': obj,
             'obj_type': self.model._meta.verbose_name,
             'form': form,
-            'cancel_url': self.get_return_url(obj),
+            'return_url': self.get_return_url(obj),
         })
 
 
@@ -226,10 +224,10 @@ class ObjectDeleteView(View):
         else:
             return get_object_or_404(self.model, pk=kwargs['pk'])
 
-    def get_cancel_url(self, obj):
+    def get_return_url(self, obj):
         if hasattr(obj, 'get_absolute_url'):
             return obj.get_absolute_url()
-        return reverse('home')
+        return reverse(self.default_return_url)
 
     def get(self, request, **kwargs):
 
@@ -243,7 +241,7 @@ class ObjectDeleteView(View):
             'obj': obj,
             'form': form,
             'obj_type': self.model._meta.verbose_name,
-            'cancel_url': request.GET.get('return_url') or self.get_cancel_url(obj),
+            'return_url': request.GET.get('return_url') or self.get_return_url(obj),
         })
 
     def post(self, request, **kwargs):
@@ -272,7 +270,7 @@ class ObjectDeleteView(View):
             'obj': obj,
             'form': form,
             'obj_type': self.model._meta.verbose_name,
-            'cancel_url': request.GET.get('return_url') or self.get_cancel_url(obj),
+            'return_url': request.GET.get('return_url') or self.get_return_url(obj),
         })
 
 
@@ -283,12 +281,12 @@ class BulkAddView(View):
     form: Form class
     model: The model of the objects being created
     template_name: The name of the template
-    redirect_url: Name of the URL to which the user is redirected after creating the objects
+    default_return_url: Name of the URL to which the user is redirected after creating the objects
     """
     form = None
     model = None
     template_name = None
-    redirect_url = None
+    default_return_url = 'home'
 
     def get(self, request):
 
@@ -297,7 +295,7 @@ class BulkAddView(View):
         return render(request, self.template_name, {
             'obj_type': self.model._meta.verbose_name,
             'form': form,
-            'cancel_url': reverse(self.redirect_url),
+            'return_url': reverse(self.default_return_url),
         })
 
     def post(self, request):
@@ -328,12 +326,12 @@ class BulkAddView(View):
                 messages.success(request, u"Added {} {}.".format(len(new_objs), self.model._meta.verbose_name_plural))
                 if '_addanother' in request.POST:
                     return redirect(request.path)
-                return redirect(self.redirect_url)
+                return redirect(self.default_return_url)
 
         return render(request, self.template_name, {
             'form': form,
             'obj_type': self.model._meta.verbose_name,
-            'cancel_url': reverse(self.redirect_url),
+            'return_url': reverse(self.default_return_url),
         })
 
 
@@ -344,18 +342,18 @@ class BulkImportView(View):
     form: Form class
     table: The django-tables2 Table used to render the list of imported objects
     template_name: The name of the template
-    obj_list_url: The name of the URL to use for the cancel button
+    default_return_url: The name of the URL to use for the cancel button
     """
     form = None
     table = None
     template_name = None
-    obj_list_url = None
+    default_return_url = None
 
     def get(self, request):
 
         return render(request, self.template_name, {
             'form': self.form(),
-            'obj_list_url': self.obj_list_url,
+            'return_url': self.default_return_url,
         })
 
     def post(self, request):
@@ -384,7 +382,7 @@ class BulkImportView(View):
 
         return render(request, self.template_name, {
             'form': form,
-            'obj_list_url': self.obj_list_url,
+            'return_url': self.default_return_url,
         })
 
     def save_obj(self, obj):
@@ -400,17 +398,18 @@ class BulkEditView(View):
     filter: FilterSet to apply when deleting by QuerySet
     form: The form class used to edit objects in bulk
     template_name: The name of the template
-    default_redirect_url: Name of the URL to which the user is redirected after editing the objects
+    default_return_url: Name of the URL to which the user is redirected after editing the objects (can be overriden by
+                        POSTing return_url)
     """
     cls = None
     parent_cls = None
     filter = None
     form = None
     template_name = None
-    default_redirect_url = None
+    default_return_url = 'home'
 
     def get(self):
-        return redirect(self.default_redirect_url)
+        return redirect(self.default_return_url)
 
     def post(self, request, **kwargs):
 
@@ -421,15 +420,13 @@ class BulkEditView(View):
             parent_obj = None
 
         # Determine URL to redirect users upon modification of objects
-        posted_redirect_url = request.POST.get('redirect_url')
-        if posted_redirect_url and is_safe_url(url=posted_redirect_url, host=request.get_host()):
-            redirect_url = posted_redirect_url
+        posted_return_url = request.POST.get('return_url')
+        if posted_return_url and is_safe_url(url=posted_return_url, host=request.get_host()):
+            return_url = posted_return_url
         elif parent_obj:
-            redirect_url = parent_obj.get_absolute_url()
-        elif self.default_redirect_url:
-            redirect_url = reverse(self.default_redirect_url)
+            return_url = parent_obj.get_absolute_url()
         else:
-            raise ImproperlyConfigured('No redirect URL has been provided.')
+            return_url = reverse(self.default_return_url)
 
         # Are we editing *all* objects in the queryset or just a selected subset?
         if request.POST.get('_all') and self.filter is not None:
@@ -467,7 +464,7 @@ class BulkEditView(View):
                     msg = u'Updated {} {}'.format(updated_count, self.cls._meta.verbose_name_plural)
                     messages.success(self.request, msg)
                     UserAction.objects.log_bulk_edit(request.user, ContentType.objects.get_for_model(self.cls), msg)
-                return redirect(redirect_url)
+                return redirect(return_url)
 
         else:
             form = self.form(self.cls, initial={'pk': pk_list})
@@ -475,12 +472,12 @@ class BulkEditView(View):
         selected_objects = self.cls.objects.filter(pk__in=pk_list)
         if not selected_objects:
             messages.warning(request, u"No {} were selected.".format(self.cls._meta.verbose_name_plural))
-            return redirect(redirect_url)
+            return redirect(return_url)
 
         return render(request, self.template_name, {
             'form': form,
             'selected_objects': selected_objects,
-            'cancel_url': redirect_url,
+            'return_url': return_url,
         })
 
     def update_custom_fields(self, pk_list, form, fields, nullified_fields):
@@ -540,14 +537,15 @@ class BulkDeleteView(View):
     filter: FilterSet to apply when deleting by QuerySet
     form: The form class used to delete objects in bulk
     template_name: The name of the template
-    default_redirect_url: Name of the URL to which the user is redirected after deleting the objects
+    default_return_url: Name of the URL to which the user is redirected after deleting the objects (can be overriden by
+                        POSTing return_url)
     """
     cls = None
     parent_cls = None
     filter = None
     form = None
     template_name = 'utilities/confirm_bulk_delete.html'
-    default_redirect_url = None
+    default_return_url = 'home'
 
     def post(self, request, **kwargs):
 
@@ -558,15 +556,13 @@ class BulkDeleteView(View):
             parent_obj = None
 
         # Determine URL to redirect users upon deletion of objects
-        posted_redirect_url = request.POST.get('redirect_url')
-        if posted_redirect_url and is_safe_url(url=posted_redirect_url, host=request.get_host()):
-            redirect_url = posted_redirect_url
+        posted_return_url = request.POST.get('return_url')
+        if posted_return_url and is_safe_url(url=posted_return_url, host=request.get_host()):
+            return_url = posted_return_url
         elif parent_obj:
-            redirect_url = parent_obj.get_absolute_url()
-        elif self.default_redirect_url:
-            redirect_url = reverse(self.default_redirect_url)
+            return_url = parent_obj.get_absolute_url()
         else:
-            raise ImproperlyConfigured('No redirect URL has been provided.')
+            return_url = reverse(self.default_return_url)
 
         # Are we deleting *all* objects in the queryset or just a selected subset?
         if request.POST.get('_all') and self.filter is not None:
@@ -586,12 +582,12 @@ class BulkDeleteView(View):
                     deleted_count = queryset.delete()[1][self.cls._meta.label]
                 except ProtectedError as e:
                     handle_protectederror(list(queryset), request, e)
-                    return redirect(redirect_url)
+                    return redirect(return_url)
 
                 msg = u'Deleted {} {}'.format(deleted_count, self.cls._meta.verbose_name_plural)
                 messages.success(request, msg)
                 UserAction.objects.log_bulk_delete(request.user, ContentType.objects.get_for_model(self.cls), msg)
-                return redirect(redirect_url)
+                return redirect(return_url)
 
         else:
             form = form_cls(initial={'pk': pk_list})
@@ -599,14 +595,14 @@ class BulkDeleteView(View):
         selected_objects = self.cls.objects.filter(pk__in=pk_list)
         if not selected_objects:
             messages.warning(request, u"No {} were selected for deletion.".format(self.cls._meta.verbose_name_plural))
-            return redirect(redirect_url)
+            return redirect(return_url)
 
         return render(request, self.template_name, {
             'form': form,
             'parent_obj': parent_obj,
             'obj_type_plural': self.cls._meta.verbose_name_plural,
             'selected_objects': selected_objects,
-            'cancel_url': redirect_url,
+            'return_url': return_url,
         })
 
     def get_form(self):