mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -06:00
Standardized naming of return_url for all object views
This commit is contained in:
parent
b70eca7661
commit
52420945b2
@ -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(),
|
||||
})
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
||||
#
|
||||
|
@ -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'
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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">
|
||||
|
@ -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'
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user