1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Extend GetReturnURLMixin to automatically resolve default return URL for querysets

This commit is contained in:
Jeremy Stretch
2020-07-01 11:50:31 -04:00
parent 7fab929194
commit 4613b69c28
8 changed files with 12 additions and 179 deletions

View File

@ -60,19 +60,16 @@ class ProviderEditView(ObjectEditView):
queryset = Provider.objects.all()
model_form = forms.ProviderForm
template_name = 'circuits/provider_edit.html'
default_return_url = 'circuits:provider_list'
class ProviderDeleteView(ObjectDeleteView):
queryset = Provider.objects.all()
default_return_url = 'circuits:provider_list'
class ProviderBulkImportView(BulkImportView):
queryset = Provider.objects.all()
model_form = forms.ProviderCSVForm
table = tables.ProviderTable
default_return_url = 'circuits:provider_list'
class ProviderBulkEditView(BulkEditView):
@ -80,14 +77,12 @@ class ProviderBulkEditView(BulkEditView):
filterset = filters.ProviderFilterSet
table = tables.ProviderTable
form = forms.ProviderBulkEditForm
default_return_url = 'circuits:provider_list'
class ProviderBulkDeleteView(BulkDeleteView):
queryset = Provider.objects.annotate(count_circuits=Count('circuits'))
filterset = filters.ProviderFilterSet
table = tables.ProviderTable
default_return_url = 'circuits:provider_list'
#
@ -102,20 +97,17 @@ class CircuitTypeListView(ObjectListView):
class CircuitTypeEditView(ObjectEditView):
queryset = CircuitType.objects.all()
model_form = forms.CircuitTypeForm
default_return_url = 'circuits:circuittype_list'
class CircuitTypeBulkImportView(BulkImportView):
queryset = CircuitType.objects.all()
model_form = forms.CircuitTypeCSVForm
table = tables.CircuitTypeTable
default_return_url = 'circuits:circuittype_list'
class CircuitTypeBulkDeleteView(BulkDeleteView):
queryset = CircuitType.objects.annotate(circuit_count=Count('circuits'))
table = tables.CircuitTypeTable
default_return_url = 'circuits:circuittype_list'
#
@ -165,19 +157,16 @@ class CircuitEditView(ObjectEditView):
queryset = Circuit.objects.all()
model_form = forms.CircuitForm
template_name = 'circuits/circuit_edit.html'
default_return_url = 'circuits:circuit_list'
class CircuitDeleteView(ObjectDeleteView):
queryset = Circuit.objects.all()
default_return_url = 'circuits:circuit_list'
class CircuitBulkImportView(BulkImportView):
queryset = Circuit.objects.all()
model_form = forms.CircuitCSVForm
table = tables.CircuitTable
default_return_url = 'circuits:circuit_list'
class CircuitBulkEditView(BulkEditView):
@ -185,14 +174,12 @@ class CircuitBulkEditView(BulkEditView):
filterset = filters.CircuitFilterSet
table = tables.CircuitTable
form = forms.CircuitBulkEditForm
default_return_url = 'circuits:circuit_list'
class CircuitBulkDeleteView(BulkDeleteView):
queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant').prefetch_related('terminations__site')
filterset = filters.CircuitFilterSet
table = tables.CircuitTable
default_return_url = 'circuits:circuit_list'
class CircuitSwapTerminations(ObjectEditView):

View File

@ -120,21 +120,18 @@ class RegionListView(ObjectListView):
class RegionEditView(ObjectEditView):
queryset = Region.objects.all()
model_form = forms.RegionForm
default_return_url = 'dcim:region_list'
class RegionBulkImportView(BulkImportView):
queryset = Region.objects.all()
model_form = forms.RegionCSVForm
table = tables.RegionTable
default_return_url = 'dcim:region_list'
class RegionBulkDeleteView(BulkDeleteView):
queryset = Region.objects.all()
filterset = filters.RegionFilterSet
table = tables.RegionTable
default_return_url = 'dcim:region_list'
#
@ -179,19 +176,16 @@ class SiteEditView(ObjectEditView):
queryset = Site.objects.all()
model_form = forms.SiteForm
template_name = 'dcim/site_edit.html'
default_return_url = 'dcim:site_list'
class SiteDeleteView(ObjectDeleteView):
queryset = Site.objects.all()
default_return_url = 'dcim:site_list'
class SiteBulkImportView(BulkImportView):
queryset = Site.objects.all()
model_form = forms.SiteCSVForm
table = tables.SiteTable
default_return_url = 'dcim:site_list'
class SiteBulkEditView(BulkEditView):
@ -199,14 +193,12 @@ class SiteBulkEditView(BulkEditView):
filterset = filters.SiteFilterSet
table = tables.SiteTable
form = forms.SiteBulkEditForm
default_return_url = 'dcim:site_list'
class SiteBulkDeleteView(BulkDeleteView):
queryset = Site.objects.prefetch_related('region', 'tenant')
filterset = filters.SiteFilterSet
table = tables.SiteTable
default_return_url = 'dcim:site_list'
#
@ -229,21 +221,18 @@ class RackGroupListView(ObjectListView):
class RackGroupEditView(ObjectEditView):
queryset = RackGroup.objects.all()
model_form = forms.RackGroupForm
default_return_url = 'dcim:rackgroup_list'
class RackGroupBulkImportView(BulkImportView):
queryset = RackGroup.objects.all()
model_form = forms.RackGroupCSVForm
table = tables.RackGroupTable
default_return_url = 'dcim:rackgroup_list'
class RackGroupBulkDeleteView(BulkDeleteView):
queryset = RackGroup.objects.prefetch_related('site').annotate(rack_count=Count('racks'))
filterset = filters.RackGroupFilterSet
table = tables.RackGroupTable
default_return_url = 'dcim:rackgroup_list'
#
@ -258,20 +247,17 @@ class RackRoleListView(ObjectListView):
class RackRoleEditView(ObjectEditView):
queryset = RackRole.objects.all()
model_form = forms.RackRoleForm
default_return_url = 'dcim:rackrole_list'
class RackRoleBulkImportView(BulkImportView):
queryset = RackRole.objects.all()
model_form = forms.RackRoleCSVForm
table = tables.RackRoleTable
default_return_url = 'dcim:rackrole_list'
class RackRoleBulkDeleteView(BulkDeleteView):
queryset = RackRole.objects.annotate(rack_count=Count('racks'))
table = tables.RackRoleTable
default_return_url = 'dcim:rackrole_list'
#
@ -363,19 +349,16 @@ class RackEditView(ObjectEditView):
queryset = Rack.objects.all()
model_form = forms.RackForm
template_name = 'dcim/rack_edit.html'
default_return_url = 'dcim:rack_list'
class RackDeleteView(ObjectDeleteView):
queryset = Rack.objects.all()
default_return_url = 'dcim:rack_list'
class RackBulkImportView(BulkImportView):
queryset = Rack.objects.all()
model_form = forms.RackCSVForm
table = tables.RackTable
default_return_url = 'dcim:rack_list'
class RackBulkEditView(BulkEditView):
@ -383,14 +366,12 @@ class RackBulkEditView(BulkEditView):
filterset = filters.RackFilterSet
table = tables.RackTable
form = forms.RackBulkEditForm
default_return_url = 'dcim:rack_list'
class RackBulkDeleteView(BulkDeleteView):
queryset = Rack.objects.prefetch_related('site', 'group', 'tenant', 'role')
filterset = filters.RackFilterSet
table = tables.RackTable
default_return_url = 'dcim:rack_list'
#
@ -421,7 +402,6 @@ class RackReservationEditView(ObjectEditView):
queryset = RackReservation.objects.all()
model_form = forms.RackReservationForm
template_name = 'dcim/rackreservation_edit.html'
default_return_url = 'dcim:rackreservation_list'
def alter_obj(self, obj, request, args, kwargs):
if not obj.pk:
@ -433,14 +413,12 @@ class RackReservationEditView(ObjectEditView):
class RackReservationDeleteView(ObjectDeleteView):
queryset = RackReservation.objects.all()
default_return_url = 'dcim:rackreservation_list'
class RackReservationImportView(BulkImportView):
queryset = RackReservation.objects.all()
model_form = forms.RackReservationCSVForm
table = tables.RackReservationTable
default_return_url = 'dcim:rackreservation_list'
def _save_obj(self, obj_form, request):
"""
@ -458,14 +436,12 @@ class RackReservationBulkEditView(BulkEditView):
filterset = filters.RackReservationFilterSet
table = tables.RackReservationTable
form = forms.RackReservationBulkEditForm
default_return_url = 'dcim:rackreservation_list'
class RackReservationBulkDeleteView(BulkDeleteView):
queryset = RackReservation.objects.prefetch_related('rack', 'user')
filterset = filters.RackReservationFilterSet
table = tables.RackReservationTable
default_return_url = 'dcim:rackreservation_list'
#
@ -484,20 +460,17 @@ class ManufacturerListView(ObjectListView):
class ManufacturerEditView(ObjectEditView):
queryset = Manufacturer.objects.all()
model_form = forms.ManufacturerForm
default_return_url = 'dcim:manufacturer_list'
class ManufacturerBulkImportView(BulkImportView):
queryset = Manufacturer.objects.all()
model_form = forms.ManufacturerCSVForm
table = tables.ManufacturerTable
default_return_url = 'dcim:manufacturer_list'
class ManufacturerBulkDeleteView(BulkDeleteView):
queryset = Manufacturer.objects.annotate(devicetype_count=Count('device_types'))
table = tables.ManufacturerTable
default_return_url = 'dcim:manufacturer_list'
#
@ -580,12 +553,10 @@ class DeviceTypeEditView(ObjectEditView):
queryset = DeviceType.objects.all()
model_form = forms.DeviceTypeForm
template_name = 'dcim/devicetype_edit.html'
default_return_url = 'dcim:devicetype_list'
class DeviceTypeDeleteView(ObjectDeleteView):
queryset = DeviceType.objects.all()
default_return_url = 'dcim:devicetype_list'
class DeviceTypeImportView(ObjectImportView):
@ -612,7 +583,6 @@ class DeviceTypeImportView(ObjectImportView):
('front-ports', forms.FrontPortTemplateImportForm),
('device-bays', forms.DeviceBayTemplateImportForm),
))
default_return_url = 'dcim:devicetype_import'
class DeviceTypeBulkEditView(BulkEditView):
@ -620,14 +590,12 @@ class DeviceTypeBulkEditView(BulkEditView):
filterset = filters.DeviceTypeFilterSet
table = tables.DeviceTypeTable
form = forms.DeviceTypeBulkEditForm
default_return_url = 'dcim:devicetype_list'
class DeviceTypeBulkDeleteView(BulkDeleteView):
queryset = DeviceType.objects.prefetch_related('manufacturer').annotate(instance_count=Count('instances'))
filterset = filters.DeviceTypeFilterSet
table = tables.DeviceTypeTable
default_return_url = 'dcim:devicetype_list'
#
@ -890,20 +858,17 @@ class DeviceRoleListView(ObjectListView):
class DeviceRoleEditView(ObjectEditView):
queryset = DeviceRole.objects.all()
model_form = forms.DeviceRoleForm
default_return_url = 'dcim:devicerole_list'
class DeviceRoleBulkImportView(BulkImportView):
queryset = DeviceRole.objects.all()
model_form = forms.DeviceRoleCSVForm
table = tables.DeviceRoleTable
default_return_url = 'dcim:devicerole_list'
class DeviceRoleBulkDeleteView(BulkDeleteView):
queryset = DeviceRole.objects.all()
table = tables.DeviceRoleTable
default_return_url = 'dcim:devicerole_list'
#
@ -918,20 +883,17 @@ class PlatformListView(ObjectListView):
class PlatformEditView(ObjectEditView):
queryset = Platform.objects.all()
model_form = forms.PlatformForm
default_return_url = 'dcim:platform_list'
class PlatformBulkImportView(BulkImportView):
queryset = Platform.objects.all()
model_form = forms.PlatformCSVForm
table = tables.PlatformTable
default_return_url = 'dcim:platform_list'
class PlatformBulkDeleteView(BulkDeleteView):
queryset = Platform.objects.all()
table = tables.PlatformTable
default_return_url = 'dcim:platform_list'
#
@ -1118,12 +1080,10 @@ class DeviceEditView(ObjectEditView):
queryset = Device.objects.all()
model_form = forms.DeviceForm
template_name = 'dcim/device_edit.html'
default_return_url = 'dcim:device_list'
class DeviceDeleteView(ObjectDeleteView):
queryset = Device.objects.all()
default_return_url = 'dcim:device_list'
class DeviceBulkImportView(BulkImportView):
@ -1131,7 +1091,6 @@ class DeviceBulkImportView(BulkImportView):
model_form = forms.DeviceCSVForm
table = tables.DeviceImportTable
template_name = 'dcim/device_import.html'
default_return_url = 'dcim:device_list'
class ChildDeviceBulkImportView(BulkImportView):
@ -1139,7 +1098,6 @@ class ChildDeviceBulkImportView(BulkImportView):
model_form = forms.ChildDeviceCSVForm
table = tables.DeviceImportTable
template_name = 'dcim/device_import_child.html'
default_return_url = 'dcim:device_list'
def _save_obj(self, obj_form, request):
@ -1158,14 +1116,12 @@ class DeviceBulkEditView(BulkEditView):
filterset = filters.DeviceFilterSet
table = tables.DeviceTable
form = forms.DeviceBulkEditForm
default_return_url = 'dcim:device_list'
class DeviceBulkDeleteView(BulkDeleteView):
queryset = Device.objects.prefetch_related('tenant', 'site', 'rack', 'device_role', 'device_type__manufacturer')
filterset = filters.DeviceFilterSet
table = tables.DeviceTable
default_return_url = 'dcim:device_list'
#
@ -1204,7 +1160,6 @@ class ConsolePortBulkImportView(BulkImportView):
queryset = ConsolePort.objects.all()
model_form = forms.ConsolePortCSVForm
table = tables.ConsolePortTable
default_return_url = 'dcim:consoleport_list'
class ConsolePortBulkEditView(BulkEditView):
@ -1226,7 +1181,6 @@ class ConsolePortBulkDeleteView(BulkDeleteView):
queryset = ConsolePort.objects.all()
filterset = filters.ConsolePortFilterSet
table = tables.ConsolePortTable
default_return_url = 'dcim:consoleport_list'
#
@ -1265,7 +1219,6 @@ class ConsoleServerPortBulkImportView(BulkImportView):
queryset = ConsoleServerPort.objects.all()
model_form = forms.ConsoleServerPortCSVForm
table = tables.ConsoleServerPortTable
default_return_url = 'dcim:consoleserverport_list'
class ConsoleServerPortBulkEditView(BulkEditView):
@ -1287,7 +1240,6 @@ class ConsoleServerPortBulkDeleteView(BulkDeleteView):
queryset = ConsoleServerPort.objects.all()
filterset = filters.ConsoleServerPortFilterSet
table = tables.ConsoleServerPortTable
default_return_url = 'dcim:consoleserverport_list'
#
@ -1326,7 +1278,6 @@ class PowerPortBulkImportView(BulkImportView):
queryset = PowerPort.objects.all()
model_form = forms.PowerPortCSVForm
table = tables.PowerPortTable
default_return_url = 'dcim:powerport_list'
class PowerPortBulkEditView(BulkEditView):
@ -1348,7 +1299,6 @@ class PowerPortBulkDeleteView(BulkDeleteView):
queryset = PowerPort.objects.all()
filterset = filters.PowerPortFilterSet
table = tables.PowerPortTable
default_return_url = 'dcim:powerport_list'
#
@ -1387,7 +1337,6 @@ class PowerOutletBulkImportView(BulkImportView):
queryset = PowerOutlet.objects.all()
model_form = forms.PowerOutletCSVForm
table = tables.PowerOutletTable
default_return_url = 'dcim:poweroutlet_list'
class PowerOutletBulkEditView(BulkEditView):
@ -1409,7 +1358,6 @@ class PowerOutletBulkDeleteView(BulkDeleteView):
queryset = PowerOutlet.objects.all()
filterset = filters.PowerOutletFilterSet
table = tables.PowerOutletTable
default_return_url = 'dcim:poweroutlet_list'
#
@ -1481,7 +1429,6 @@ class InterfaceBulkImportView(BulkImportView):
queryset = Interface.objects.all()
model_form = forms.InterfaceCSVForm
table = tables.InterfaceTable
default_return_url = 'dcim:interface_list'
class InterfaceBulkEditView(BulkEditView):
@ -1503,7 +1450,6 @@ class InterfaceBulkDeleteView(BulkDeleteView):
queryset = Interface.objects.all()
filterset = filters.InterfaceFilterSet
table = tables.InterfaceTable
default_return_url = 'dcim:interface_list'
#
@ -1542,7 +1488,6 @@ class FrontPortBulkImportView(BulkImportView):
queryset = FrontPort.objects.all()
model_form = forms.FrontPortCSVForm
table = tables.FrontPortTable
default_return_url = 'dcim:frontport_list'
class FrontPortBulkEditView(BulkEditView):
@ -1564,7 +1509,6 @@ class FrontPortBulkDeleteView(BulkDeleteView):
queryset = FrontPort.objects.all()
filterset = filters.FrontPortFilterSet
table = tables.FrontPortTable
default_return_url = 'dcim:frontport_list'
#
@ -1603,7 +1547,6 @@ class RearPortBulkImportView(BulkImportView):
queryset = RearPort.objects.all()
model_form = forms.RearPortCSVForm
table = tables.RearPortTable
default_return_url = 'dcim:rearport_list'
class RearPortBulkEditView(BulkEditView):
@ -1625,7 +1568,6 @@ class RearPortBulkDeleteView(BulkDeleteView):
queryset = RearPort.objects.all()
filterset = filters.RearPortFilterSet
table = tables.RearPortTable
default_return_url = 'dcim:rearport_list'
#
@ -1731,7 +1673,6 @@ class DeviceBayBulkImportView(BulkImportView):
queryset = DeviceBay.objects.all()
model_form = forms.DeviceBayCSVForm
table = tables.DeviceBayTable
default_return_url = 'dcim:devicebay_list'
class DeviceBayBulkEditView(BulkEditView):
@ -1749,7 +1690,6 @@ class DeviceBayBulkDeleteView(BulkDeleteView):
queryset = DeviceBay.objects.all()
filterset = filters.DeviceBayFilterSet
table = tables.DeviceBayTable
default_return_url = 'dcim:devicebay_list'
#
@ -1901,7 +1841,6 @@ class CableTraceView(ObjectView):
class CableCreateView(ObjectEditView):
queryset = Cable.objects.all()
template_name = 'dcim/cable_connect.html'
default_return_url = 'dcim:cable_list'
def dispatch(self, request, *args, **kwargs):
@ -1959,19 +1898,16 @@ class CableEditView(ObjectEditView):
queryset = Cable.objects.all()
model_form = forms.CableForm
template_name = 'dcim/cable_edit.html'
default_return_url = 'dcim:cable_list'
class CableDeleteView(ObjectDeleteView):
queryset = Cable.objects.all()
default_return_url = 'dcim:cable_list'
class CableBulkImportView(BulkImportView):
queryset = Cable.objects.all()
model_form = forms.CableCSVForm
table = tables.CableTable
default_return_url = 'dcim:cable_list'
class CableBulkEditView(BulkEditView):
@ -1979,14 +1915,12 @@ class CableBulkEditView(BulkEditView):
filterset = filters.CableFilterSet
table = tables.CableTable
form = forms.CableBulkEditForm
default_return_url = 'dcim:cable_list'
class CableBulkDeleteView(BulkDeleteView):
queryset = Cable.objects.prefetch_related('termination_a', 'termination_b')
filterset = filters.CableFilterSet
table = tables.CableTable
default_return_url = 'dcim:cable_list'
#
@ -2122,7 +2056,6 @@ class InventoryItemBulkImportView(BulkImportView):
queryset = InventoryItem.objects.all()
model_form = forms.InventoryItemCSVForm
table = tables.InventoryItemTable
default_return_url = 'dcim:inventoryitem_list'
class InventoryItemBulkEditView(BulkEditView):
@ -2130,14 +2063,12 @@ class InventoryItemBulkEditView(BulkEditView):
filterset = filters.InventoryItemFilterSet
table = tables.InventoryItemTable
form = forms.InventoryItemBulkEditForm
default_return_url = 'dcim:inventoryitem_list'
class InventoryItemBulkDeleteView(BulkDeleteView):
queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer')
table = tables.InventoryItemTable
template_name = 'dcim/inventoryitem_bulk_delete.html'
default_return_url = 'dcim:inventoryitem_list'
#
@ -2169,7 +2100,6 @@ class VirtualChassisCreateView(ObjectEditView):
queryset = VirtualChassis.objects.all()
model_form = forms.VirtualChassisCreateForm
template_name = 'dcim/virtualchassis_add.html'
default_return_url = 'dcim:virtualchassis_list'
class VirtualChassisEditView(ObjectPermissionRequiredMixin, GetReturnURLMixin, View):
@ -2242,7 +2172,6 @@ class VirtualChassisEditView(ObjectPermissionRequiredMixin, GetReturnURLMixin, V
class VirtualChassisDeleteView(ObjectDeleteView):
queryset = VirtualChassis.objects.all()
default_return_url = 'dcim:device_list'
class VirtualChassisAddMemberView(ObjectPermissionRequiredMixin, GetReturnURLMixin, View):
@ -2356,7 +2285,6 @@ class VirtualChassisBulkImportView(BulkImportView):
queryset = VirtualChassis.objects.all()
model_form = forms.VirtualChassisCSVForm
table = tables.VirtualChassisTable
default_return_url = 'dcim:virtualchassis_list'
class VirtualChassisBulkEditView(BulkEditView):
@ -2364,14 +2292,12 @@ class VirtualChassisBulkEditView(BulkEditView):
filterset = filters.VirtualChassisFilterSet
table = tables.VirtualChassisTable
form = forms.VirtualChassisBulkEditForm
default_return_url = 'dcim:virtualchassis_list'
class VirtualChassisBulkDeleteView(BulkDeleteView):
queryset = VirtualChassis.objects.all()
filterset = filters.VirtualChassisFilterSet
table = tables.VirtualChassisTable
default_return_url = 'dcim:virtualchassis_list'
#
@ -2411,19 +2337,16 @@ class PowerPanelView(ObjectView):
class PowerPanelEditView(ObjectEditView):
queryset = PowerPanel.objects.all()
model_form = forms.PowerPanelForm
default_return_url = 'dcim:powerpanel_list'
class PowerPanelDeleteView(ObjectDeleteView):
queryset = PowerPanel.objects.all()
default_return_url = 'dcim:powerpanel_list'
class PowerPanelBulkImportView(BulkImportView):
queryset = PowerPanel.objects.all()
model_form = forms.PowerPanelCSVForm
table = tables.PowerPanelTable
default_return_url = 'dcim:powerpanel_list'
class PowerPanelBulkEditView(BulkEditView):
@ -2431,7 +2354,6 @@ class PowerPanelBulkEditView(BulkEditView):
filterset = filters.PowerPanelFilterSet
table = tables.PowerPanelTable
form = forms.PowerPanelBulkEditForm
default_return_url = 'dcim:powerpanel_list'
class PowerPanelBulkDeleteView(BulkDeleteView):
@ -2442,7 +2364,6 @@ class PowerPanelBulkDeleteView(BulkDeleteView):
)
filterset = filters.PowerPanelFilterSet
table = tables.PowerPanelTable
default_return_url = 'dcim:powerpanel_list'
#
@ -2474,19 +2395,16 @@ class PowerFeedEditView(ObjectEditView):
queryset = PowerFeed.objects.all()
model_form = forms.PowerFeedForm
template_name = 'dcim/powerfeed_edit.html'
default_return_url = 'dcim:powerfeed_list'
class PowerFeedDeleteView(ObjectDeleteView):
queryset = PowerFeed.objects.all()
default_return_url = 'dcim:powerfeed_list'
class PowerFeedBulkImportView(BulkImportView):
queryset = PowerFeed.objects.all()
model_form = forms.PowerFeedCSVForm
table = tables.PowerFeedTable
default_return_url = 'dcim:powerfeed_list'
class PowerFeedBulkEditView(BulkEditView):
@ -2494,11 +2412,9 @@ class PowerFeedBulkEditView(BulkEditView):
filterset = filters.PowerFeedFilterSet
table = tables.PowerFeedTable
form = forms.PowerFeedBulkEditForm
default_return_url = 'dcim:powerfeed_list'
class PowerFeedBulkDeleteView(BulkDeleteView):
queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack')
filterset = filters.PowerFeedFilterSet
table = tables.PowerFeedTable
default_return_url = 'dcim:powerfeed_list'

View File

@ -70,20 +70,17 @@ class TagView(ObjectView):
class TagEditView(ObjectEditView):
queryset = Tag.objects.all()
model_form = forms.TagForm
default_return_url = 'extras:tag_list'
template_name = 'extras/tag_edit.html'
class TagDeleteView(ObjectDeleteView):
queryset = Tag.objects.all()
default_return_url = 'extras:tag_list'
class TagBulkImportView(BulkImportView):
queryset = Tag.objects.all()
model_form = forms.TagCSVForm
table = tables.TagTable
default_return_url = 'extras:tag_list'
class TagBulkEditView(BulkEditView):
@ -94,7 +91,6 @@ class TagBulkEditView(BulkEditView):
)
table = tables.TagTable
form = forms.TagBulkEditForm
default_return_url = 'extras:tag_list'
class TagBulkDeleteView(BulkDeleteView):
@ -104,7 +100,6 @@ class TagBulkDeleteView(BulkDeleteView):
'name'
)
table = tables.TagTable
default_return_url = 'extras:tag_list'
#
@ -156,7 +151,6 @@ class ConfigContextView(ObjectView):
class ConfigContextEditView(ObjectEditView):
queryset = ConfigContext.objects.all()
model_form = forms.ConfigContextForm
default_return_url = 'extras:configcontext_list'
template_name = 'extras/configcontext_edit.html'
@ -165,18 +159,15 @@ class ConfigContextBulkEditView(BulkEditView):
filterset = filters.ConfigContextFilterSet
table = tables.ConfigContextTable
form = forms.ConfigContextBulkEditForm
default_return_url = 'extras:configcontext_list'
class ConfigContextDeleteView(ObjectDeleteView):
queryset = ConfigContext.objects.all()
default_return_url = 'extras:configcontext_list'
class ConfigContextBulkDeleteView(BulkDeleteView):
queryset = ConfigContext.objects.all()
table = tables.ConfigContextTable
default_return_url = 'extras:configcontext_list'
class ObjectConfigContextView(ObjectView):

View File

@ -48,19 +48,16 @@ class VRFEditView(ObjectEditView):
queryset = VRF.objects.all()
model_form = forms.VRFForm
template_name = 'ipam/vrf_edit.html'
default_return_url = 'ipam:vrf_list'
class VRFDeleteView(ObjectDeleteView):
queryset = VRF.objects.all()
default_return_url = 'ipam:vrf_list'
class VRFBulkImportView(BulkImportView):
queryset = VRF.objects.all()
model_form = forms.VRFCSVForm
table = tables.VRFTable
default_return_url = 'ipam:vrf_list'
class VRFBulkEditView(BulkEditView):
@ -68,14 +65,12 @@ class VRFBulkEditView(BulkEditView):
filterset = filters.VRFFilterSet
table = tables.VRFTable
form = forms.VRFBulkEditForm
default_return_url = 'ipam:vrf_list'
class VRFBulkDeleteView(BulkDeleteView):
queryset = VRF.objects.prefetch_related('tenant')
filterset = filters.VRFFilterSet
table = tables.VRFTable
default_return_url = 'ipam:vrf_list'
#
@ -163,21 +158,18 @@ class RIRListView(ObjectListView):
class RIREditView(ObjectEditView):
queryset = RIR.objects.all()
model_form = forms.RIRForm
default_return_url = 'ipam:rir_list'
class RIRBulkImportView(BulkImportView):
queryset = RIR.objects.all()
model_form = forms.RIRCSVForm
table = tables.RIRTable
default_return_url = 'ipam:rir_list'
class RIRBulkDeleteView(BulkDeleteView):
queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
filterset = filters.RIRFilterSet
table = tables.RIRTable
default_return_url = 'ipam:rir_list'
#
@ -259,19 +251,16 @@ class AggregateEditView(ObjectEditView):
queryset = Aggregate.objects.all()
model_form = forms.AggregateForm
template_name = 'ipam/aggregate_edit.html'
default_return_url = 'ipam:aggregate_list'
class AggregateDeleteView(ObjectDeleteView):
queryset = Aggregate.objects.all()
default_return_url = 'ipam:aggregate_list'
class AggregateBulkImportView(BulkImportView):
queryset = Aggregate.objects.all()
model_form = forms.AggregateCSVForm
table = tables.AggregateTable
default_return_url = 'ipam:aggregate_list'
class AggregateBulkEditView(BulkEditView):
@ -279,14 +268,12 @@ class AggregateBulkEditView(BulkEditView):
filterset = filters.AggregateFilterSet
table = tables.AggregateTable
form = forms.AggregateBulkEditForm
default_return_url = 'ipam:aggregate_list'
class AggregateBulkDeleteView(BulkDeleteView):
queryset = Aggregate.objects.prefetch_related('rir')
filterset = filters.AggregateFilterSet
table = tables.AggregateTable
default_return_url = 'ipam:aggregate_list'
#
@ -301,20 +288,17 @@ class RoleListView(ObjectListView):
class RoleEditView(ObjectEditView):
queryset = Role.objects.all()
model_form = forms.RoleForm
default_return_url = 'ipam:role_list'
class RoleBulkImportView(BulkImportView):
queryset = Role.objects.all()
model_form = forms.RoleCSVForm
table = tables.RoleTable
default_return_url = 'ipam:role_list'
class RoleBulkDeleteView(BulkDeleteView):
queryset = Role.objects.all()
table = tables.RoleTable
default_return_url = 'ipam:role_list'
#
@ -470,20 +454,17 @@ class PrefixEditView(ObjectEditView):
queryset = Prefix.objects.all()
model_form = forms.PrefixForm
template_name = 'ipam/prefix_edit.html'
default_return_url = 'ipam:prefix_list'
class PrefixDeleteView(ObjectDeleteView):
queryset = Prefix.objects.all()
template_name = 'ipam/prefix_delete.html'
default_return_url = 'ipam:prefix_list'
class PrefixBulkImportView(BulkImportView):
queryset = Prefix.objects.all()
model_form = forms.PrefixCSVForm
table = tables.PrefixTable
default_return_url = 'ipam:prefix_list'
class PrefixBulkEditView(BulkEditView):
@ -491,14 +472,12 @@ class PrefixBulkEditView(BulkEditView):
filterset = filters.PrefixFilterSet
table = tables.PrefixTable
form = forms.PrefixBulkEditForm
default_return_url = 'ipam:prefix_list'
class PrefixBulkDeleteView(BulkDeleteView):
queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
filterset = filters.PrefixFilterSet
table = tables.PrefixTable
default_return_url = 'ipam:prefix_list'
#
@ -569,7 +548,6 @@ class IPAddressEditView(ObjectEditView):
queryset = IPAddress.objects.all()
model_form = forms.IPAddressForm
template_name = 'ipam/ipaddress_edit.html'
default_return_url = 'ipam:ipaddress_list'
def alter_obj(self, obj, request, url_args, url_kwargs):
@ -630,7 +608,6 @@ class IPAddressAssignView(ObjectView):
class IPAddressDeleteView(ObjectDeleteView):
queryset = IPAddress.objects.all()
default_return_url = 'ipam:ipaddress_list'
class IPAddressBulkCreateView(BulkCreateView):
@ -639,14 +616,12 @@ class IPAddressBulkCreateView(BulkCreateView):
model_form = forms.IPAddressBulkAddForm
pattern_target = 'address'
template_name = 'ipam/ipaddress_bulk_add.html'
default_return_url = 'ipam:ipaddress_list'
class IPAddressBulkImportView(BulkImportView):
queryset = IPAddress.objects.all()
model_form = forms.IPAddressCSVForm
table = tables.IPAddressTable
default_return_url = 'ipam:ipaddress_list'
class IPAddressBulkEditView(BulkEditView):
@ -654,14 +629,12 @@ class IPAddressBulkEditView(BulkEditView):
filterset = filters.IPAddressFilterSet
table = tables.IPAddressTable
form = forms.IPAddressBulkEditForm
default_return_url = 'ipam:ipaddress_list'
class IPAddressBulkDeleteView(BulkDeleteView):
queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant')
filterset = filters.IPAddressFilterSet
table = tables.IPAddressTable
default_return_url = 'ipam:ipaddress_list'
#
@ -678,21 +651,18 @@ class VLANGroupListView(ObjectListView):
class VLANGroupEditView(ObjectEditView):
queryset = VLANGroup.objects.all()
model_form = forms.VLANGroupForm
default_return_url = 'ipam:vlangroup_list'
class VLANGroupBulkImportView(BulkImportView):
queryset = VLANGroup.objects.all()
model_form = forms.VLANGroupCSVForm
table = tables.VLANGroupTable
default_return_url = 'ipam:vlangroup_list'
class VLANGroupBulkDeleteView(BulkDeleteView):
queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
filterset = filters.VLANGroupFilterSet
table = tables.VLANGroupTable
default_return_url = 'ipam:vlangroup_list'
class VLANGroupVLANsView(ObjectView):
@ -789,19 +759,16 @@ class VLANEditView(ObjectEditView):
queryset = VLAN.objects.all()
model_form = forms.VLANForm
template_name = 'ipam/vlan_edit.html'
default_return_url = 'ipam:vlan_list'
class VLANDeleteView(ObjectDeleteView):
queryset = VLAN.objects.all()
default_return_url = 'ipam:vlan_list'
class VLANBulkImportView(BulkImportView):
queryset = VLAN.objects.all()
model_form = forms.VLANCSVForm
table = tables.VLANTable
default_return_url = 'ipam:vlan_list'
class VLANBulkEditView(BulkEditView):
@ -809,14 +776,12 @@ class VLANBulkEditView(BulkEditView):
filterset = filters.VLANFilterSet
table = tables.VLANTable
form = forms.VLANBulkEditForm
default_return_url = 'ipam:vlan_list'
class VLANBulkDeleteView(BulkDeleteView):
queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
filterset = filters.VLANFilterSet
table = tables.VLANTable
default_return_url = 'ipam:vlan_list'
#
@ -863,7 +828,6 @@ class ServiceBulkImportView(BulkImportView):
queryset = Service.objects.all()
model_form = forms.ServiceCSVForm
table = tables.ServiceTable
default_return_url = 'ipam:service_list'
class ServiceDeleteView(ObjectDeleteView):
@ -875,11 +839,9 @@ class ServiceBulkEditView(BulkEditView):
filterset = filters.ServiceFilterSet
table = tables.ServiceTable
form = forms.ServiceBulkEditForm
default_return_url = 'ipam:service_list'
class ServiceBulkDeleteView(BulkDeleteView):
queryset = Service.objects.prefetch_related('device', 'virtual_machine')
filterset = filters.ServiceFilterSet
table = tables.ServiceTable
default_return_url = 'ipam:service_list'

View File

@ -36,20 +36,17 @@ class SecretRoleListView(ObjectListView):
class SecretRoleEditView(ObjectEditView):
queryset = SecretRole.objects.all()
model_form = forms.SecretRoleForm
default_return_url = 'secrets:secretrole_list'
class SecretRoleBulkImportView(BulkImportView):
queryset = SecretRole.objects.all()
model_form = forms.SecretRoleCSVForm
table = tables.SecretRoleTable
default_return_url = 'secrets:secretrole_list'
class SecretRoleBulkDeleteView(BulkDeleteView):
queryset = SecretRole.objects.annotate(secret_count=Count('secrets'))
table = tables.SecretRoleTable
default_return_url = 'secrets:secretrole_list'
#
@ -147,7 +144,6 @@ class SecretEditView(ObjectEditView):
class SecretDeleteView(ObjectDeleteView):
queryset = Secret.objects.all()
default_return_url = 'secrets:secret_list'
class SecretBulkImportView(BulkImportView):
@ -155,7 +151,6 @@ class SecretBulkImportView(BulkImportView):
model_form = forms.SecretCSVForm
table = tables.SecretTable
template_name = 'secrets/secret_import.html'
default_return_url = 'secrets:secret_list'
widget_attrs = {'class': 'requires-session-key'}
master_key = None
@ -203,11 +198,9 @@ class SecretBulkEditView(BulkEditView):
filterset = filters.SecretFilterSet
table = tables.SecretTable
form = forms.SecretBulkEditForm
default_return_url = 'secrets:secret_list'
class SecretBulkDeleteView(BulkDeleteView):
queryset = Secret.objects.prefetch_related('role', 'device')
filterset = filters.SecretFilterSet
table = tables.SecretTable
default_return_url = 'secrets:secret_list'

View File

@ -30,20 +30,17 @@ class TenantGroupListView(ObjectListView):
class TenantGroupEditView(ObjectEditView):
queryset = TenantGroup.objects.all()
model_form = forms.TenantGroupForm
default_return_url = 'tenancy:tenantgroup_list'
class TenantGroupBulkImportView(BulkImportView):
queryset = TenantGroup.objects.all()
model_form = forms.TenantGroupCSVForm
table = tables.TenantGroupTable
default_return_url = 'tenancy:tenantgroup_list'
class TenantGroupBulkDeleteView(BulkDeleteView):
queryset = TenantGroup.objects.annotate(tenant_count=Count('tenants'))
table = tables.TenantGroupTable
default_return_url = 'tenancy:tenantgroup_list'
#
@ -87,19 +84,16 @@ class TenantEditView(ObjectEditView):
queryset = Tenant.objects.all()
model_form = forms.TenantForm
template_name = 'tenancy/tenant_edit.html'
default_return_url = 'tenancy:tenant_list'
class TenantDeleteView(ObjectDeleteView):
queryset = Tenant.objects.all()
default_return_url = 'tenancy:tenant_list'
class TenantBulkImportView(BulkImportView):
queryset = Tenant.objects.all()
model_form = forms.TenantCSVForm
table = tables.TenantTable
default_return_url = 'tenancy:tenant_list'
class TenantBulkEditView(BulkEditView):
@ -107,11 +101,9 @@ class TenantBulkEditView(BulkEditView):
filterset = filters.TenantFilterSet
table = tables.TenantTable
form = forms.TenantBulkEditForm
default_return_url = 'tenancy:tenant_list'
class TenantBulkDeleteView(BulkDeleteView):
queryset = Tenant.objects.prefetch_related('group')
filterset = filters.TenantFilterSet
table = tables.TenantTable
default_return_url = 'tenancy:tenant_list'

View File

@ -16,6 +16,7 @@ from django.shortcuts import get_object_or_404, redirect, render
from django.template import loader
from django.template.exceptions import TemplateDoesNotExist
from django.urls import reverse
from django.urls.exceptions import NoReverseMatch
from django.utils.decorators import method_decorator
from django.utils.html import escape
from django.utils.http import is_safe_url
@ -86,7 +87,7 @@ class ObjectPermissionRequiredMixin(AccessMixin):
return super().dispatch(request, *args, **kwargs)
class GetReturnURLMixin(object):
class GetReturnURLMixin:
"""
Provides logic for determining where a user should be redirected after processing a form.
"""
@ -101,13 +102,21 @@ class GetReturnURLMixin(object):
return query_param
# Next, check if the object being modified (if any) has an absolute URL.
elif obj is not None and obj.pk and hasattr(obj, 'get_absolute_url'):
if obj is not None and obj.pk and hasattr(obj, 'get_absolute_url'):
return obj.get_absolute_url()
# Fall back to the default URL (if specified) for the view.
elif self.default_return_url is not None:
if self.default_return_url is not None:
return reverse(self.default_return_url)
# Attempt to dynamically resolve the list view for the object
if hasattr(self, 'queryset'):
model_opts = self.queryset.model._meta
try:
return reverse(f'{model_opts.app_label}:{model_opts.model_name}_list')
except NoReverseMatch:
pass
# If all else fails, return home. Ideally this should never happen.
return reverse('home')

View File

@ -29,20 +29,17 @@ class ClusterTypeListView(ObjectListView):
class ClusterTypeEditView(ObjectEditView):
queryset = ClusterType.objects.all()
model_form = forms.ClusterTypeForm
default_return_url = 'virtualization:clustertype_list'
class ClusterTypeBulkImportView(BulkImportView):
queryset = ClusterType.objects.all()
model_form = forms.ClusterTypeCSVForm
table = tables.ClusterTypeTable
default_return_url = 'virtualization:clustertype_list'
class ClusterTypeBulkDeleteView(BulkDeleteView):
queryset = ClusterType.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterTypeTable
default_return_url = 'virtualization:clustertype_list'
#
@ -57,20 +54,17 @@ class ClusterGroupListView(ObjectListView):
class ClusterGroupEditView(ObjectEditView):
queryset = ClusterGroup.objects.all()
model_form = forms.ClusterGroupForm
default_return_url = 'virtualization:clustergroup_list'
class ClusterGroupBulkImportView(BulkImportView):
queryset = ClusterGroup.objects.all()
model_form = forms.ClusterGroupCSVForm
table = tables.ClusterGroupTable
default_return_url = 'virtualization:clustergroup_list'
class ClusterGroupBulkDeleteView(BulkDeleteView):
queryset = ClusterGroup.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterGroupTable
default_return_url = 'virtualization:clustergroup_list'
#
@ -114,14 +108,12 @@ class ClusterEditView(ObjectEditView):
class ClusterDeleteView(ObjectDeleteView):
queryset = Cluster.objects.all()
default_return_url = 'virtualization:cluster_list'
class ClusterBulkImportView(BulkImportView):
queryset = Cluster.objects.all()
model_form = forms.ClusterCSVForm
table = tables.ClusterTable
default_return_url = 'virtualization:cluster_list'
class ClusterBulkEditView(BulkEditView):
@ -129,14 +121,12 @@ class ClusterBulkEditView(BulkEditView):
filterset = filters.ClusterFilterSet
table = tables.ClusterTable
form = forms.ClusterBulkEditForm
default_return_url = 'virtualization:cluster_list'
class ClusterBulkDeleteView(BulkDeleteView):
queryset = Cluster.objects.prefetch_related('type', 'group', 'site')
filterset = filters.ClusterFilterSet
table = tables.ClusterTable
default_return_url = 'virtualization:cluster_list'
class ClusterAddDevicesView(ObjectEditView):
@ -266,19 +256,16 @@ class VirtualMachineEditView(ObjectEditView):
queryset = VirtualMachine.objects.all()
model_form = forms.VirtualMachineForm
template_name = 'virtualization/virtualmachine_edit.html'
default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineDeleteView(ObjectDeleteView):
queryset = VirtualMachine.objects.all()
default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineBulkImportView(BulkImportView):
queryset = VirtualMachine.objects.all()
model_form = forms.VirtualMachineCSVForm
table = tables.VirtualMachineTable
default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineBulkEditView(BulkEditView):
@ -286,14 +273,12 @@ class VirtualMachineBulkEditView(BulkEditView):
filterset = filters.VirtualMachineFilterSet
table = tables.VirtualMachineTable
form = forms.VirtualMachineBulkEditForm
default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineBulkDeleteView(BulkDeleteView):
queryset = VirtualMachine.objects.prefetch_related('cluster', 'tenant', 'role')
filterset = filters.VirtualMachineFilterSet
table = tables.VirtualMachineTable
default_return_url = 'virtualization:virtualmachine_list'
#
@ -364,7 +349,6 @@ class VMInterfaceBulkImportView(BulkImportView):
queryset = VMInterface.objects.all()
model_form = forms.VMInterfaceCSVForm
table = tables.VMInterfaceTable
default_return_url = 'virtualization:vminterface_list'
class VMInterfaceBulkEditView(BulkEditView):
@ -395,4 +379,3 @@ class VirtualMachineBulkAddInterfaceView(BulkComponentCreateView):
model_form = forms.VMInterfaceForm
filterset = filters.VirtualMachineFilterSet
table = tables.VirtualMachineTable
default_return_url = 'virtualization:virtualmachine_list'