Closes #18023: Employ register_model_view() for list views (#18029)

* Extend register_model_view() to enable registering list views

* Register circuits list views with register_model_view()

* Register core list views with register_model_view()

* Fix bulk_edit & bulk_delete URL paths

* Register dcim list views with register_model_view() (WIP)

* Register dcim list views with register_model_view()

* Register extras list views with register_model_view()

* Register ipam list views with register_model_view()

* Register tenancy list views with register_model_view()

* Register users list views with register_model_view()

* Register virtualization list views with register_model_view()

* Register vpn list views with register_model_view()

* Register wireless list views with register_model_view()

* Add change note for register_model_view()
This commit is contained in:
Jeremy Stretch
2024-11-20 15:54:37 -05:00
committed by GitHub
parent d2168b107f
commit a0b4b0afe0
23 changed files with 845 additions and 803 deletions

View File

@@ -31,6 +31,7 @@ from .models import *
# Cluster types
#
@register_model_view(ClusterType, 'list', path='', detail=False)
class ClusterTypeListView(generic.ObjectListView):
queryset = ClusterType.objects.annotate(
cluster_count=count_related(Cluster, 'type')
@@ -50,6 +51,7 @@ class ClusterTypeView(GetRelatedModelsMixin, generic.ObjectView):
}
@register_model_view(ClusterType, 'add', detail=False)
@register_model_view(ClusterType, 'edit')
class ClusterTypeEditView(generic.ObjectEditView):
queryset = ClusterType.objects.all()
@@ -61,11 +63,13 @@ class ClusterTypeDeleteView(generic.ObjectDeleteView):
queryset = ClusterType.objects.all()
@register_model_view(ClusterType, 'import', detail=False)
class ClusterTypeBulkImportView(generic.BulkImportView):
queryset = ClusterType.objects.all()
model_form = forms.ClusterTypeImportForm
@register_model_view(ClusterType, 'bulk_edit', path='edit', detail=False)
class ClusterTypeBulkEditView(generic.BulkEditView):
queryset = ClusterType.objects.annotate(
cluster_count=count_related(Cluster, 'type')
@@ -75,6 +79,7 @@ class ClusterTypeBulkEditView(generic.BulkEditView):
form = forms.ClusterTypeBulkEditForm
@register_model_view(ClusterType, 'bulk_delete', path='delete', detail=False)
class ClusterTypeBulkDeleteView(generic.BulkDeleteView):
queryset = ClusterType.objects.annotate(
cluster_count=count_related(Cluster, 'type')
@@ -87,6 +92,7 @@ class ClusterTypeBulkDeleteView(generic.BulkDeleteView):
# Cluster groups
#
@register_model_view(ClusterGroup, 'list', path='', detail=False)
class ClusterGroupListView(generic.ObjectListView):
queryset = ClusterGroup.objects.annotate(
cluster_count=count_related(Cluster, 'group')
@@ -106,6 +112,7 @@ class ClusterGroupView(GetRelatedModelsMixin, generic.ObjectView):
}
@register_model_view(ClusterGroup, 'add', detail=False)
@register_model_view(ClusterGroup, 'edit')
class ClusterGroupEditView(generic.ObjectEditView):
queryset = ClusterGroup.objects.all()
@@ -117,6 +124,7 @@ class ClusterGroupDeleteView(generic.ObjectDeleteView):
queryset = ClusterGroup.objects.all()
@register_model_view(ClusterGroup, 'import', detail=False)
class ClusterGroupBulkImportView(generic.BulkImportView):
queryset = ClusterGroup.objects.annotate(
cluster_count=count_related(Cluster, 'group')
@@ -124,6 +132,7 @@ class ClusterGroupBulkImportView(generic.BulkImportView):
model_form = forms.ClusterGroupImportForm
@register_model_view(ClusterGroup, 'bulk_edit', path='edit', detail=False)
class ClusterGroupBulkEditView(generic.BulkEditView):
queryset = ClusterGroup.objects.annotate(
cluster_count=count_related(Cluster, 'group')
@@ -133,6 +142,7 @@ class ClusterGroupBulkEditView(generic.BulkEditView):
form = forms.ClusterGroupBulkEditForm
@register_model_view(ClusterGroup, 'bulk_delete', path='delete', detail=False)
class ClusterGroupBulkDeleteView(generic.BulkDeleteView):
queryset = ClusterGroup.objects.annotate(
cluster_count=count_related(Cluster, 'group')
@@ -150,6 +160,7 @@ class ClusterGroupContactsView(ObjectContactsView):
# Clusters
#
@register_model_view(Cluster, 'list', path='', detail=False)
class ClusterListView(generic.ObjectListView):
permission_required = 'virtualization.view_cluster'
queryset = Cluster.objects.annotate(
@@ -213,6 +224,7 @@ class ClusterDevicesView(generic.ObjectChildrenView):
return Device.objects.restrict(request.user, 'view').filter(cluster=parent)
@register_model_view(Cluster, 'add', detail=False)
@register_model_view(Cluster, 'edit')
class ClusterEditView(generic.ObjectEditView):
queryset = Cluster.objects.all()
@@ -224,11 +236,13 @@ class ClusterDeleteView(generic.ObjectDeleteView):
queryset = Cluster.objects.all()
@register_model_view(Cluster, 'import', detail=False)
class ClusterBulkImportView(generic.BulkImportView):
queryset = Cluster.objects.all()
model_form = forms.ClusterImportForm
@register_model_view(Cluster, 'bulk_edit', path='edit', detail=False)
class ClusterBulkEditView(generic.BulkEditView):
queryset = Cluster.objects.all()
filterset = filtersets.ClusterFilterSet
@@ -236,6 +250,7 @@ class ClusterBulkEditView(generic.BulkEditView):
form = forms.ClusterBulkEditForm
@register_model_view(Cluster, 'bulk_delete', path='delete', detail=False)
class ClusterBulkDeleteView(generic.BulkDeleteView):
queryset = Cluster.objects.all()
filterset = filtersets.ClusterFilterSet
@@ -337,6 +352,7 @@ class ClusterContactsView(ObjectContactsView):
# Virtual machines
#
@register_model_view(VirtualMachine, 'list', path='', detail=False)
class VirtualMachineListView(generic.ObjectListView):
queryset = VirtualMachine.objects.prefetch_related('primary_ip4', 'primary_ip6')
filterset = filtersets.VirtualMachineFilterSet
@@ -457,6 +473,7 @@ class VirtualMachineRenderConfigView(generic.ObjectView):
}
@register_model_view(VirtualMachine, 'add', detail=False)
@register_model_view(VirtualMachine, 'edit')
class VirtualMachineEditView(generic.ObjectEditView):
queryset = VirtualMachine.objects.all()
@@ -468,11 +485,13 @@ class VirtualMachineDeleteView(generic.ObjectDeleteView):
queryset = VirtualMachine.objects.all()
@register_model_view(VirtualMachine, 'import', detail=False)
class VirtualMachineBulkImportView(generic.BulkImportView):
queryset = VirtualMachine.objects.all()
model_form = forms.VirtualMachineImportForm
@register_model_view(VirtualMachine, 'bulk_edit', path='edit', detail=False)
class VirtualMachineBulkEditView(generic.BulkEditView):
queryset = VirtualMachine.objects.prefetch_related('primary_ip4', 'primary_ip6')
filterset = filtersets.VirtualMachineFilterSet
@@ -480,6 +499,7 @@ class VirtualMachineBulkEditView(generic.BulkEditView):
form = forms.VirtualMachineBulkEditForm
@register_model_view(VirtualMachine, 'bulk_delete', path='delete', detail=False)
class VirtualMachineBulkDeleteView(generic.BulkDeleteView):
queryset = VirtualMachine.objects.prefetch_related('primary_ip4', 'primary_ip6')
filterset = filtersets.VirtualMachineFilterSet
@@ -495,6 +515,7 @@ class VirtualMachineContactsView(ObjectContactsView):
# VM interfaces
#
@register_model_view(VMInterface, 'list', path='', detail=False)
class VMInterfaceListView(generic.ObjectListView):
queryset = VMInterface.objects.all()
filterset = filtersets.VMInterfaceFilterSet
@@ -545,6 +566,7 @@ class VMInterfaceView(generic.ObjectView):
}
@register_model_view(VMInterface, 'add', detail=False)
class VMInterfaceCreateView(generic.ComponentCreateView):
queryset = VMInterface.objects.all()
form = forms.VMInterfaceCreateForm
@@ -562,11 +584,13 @@ class VMInterfaceDeleteView(generic.ObjectDeleteView):
queryset = VMInterface.objects.all()
@register_model_view(VMInterface, 'import', detail=False)
class VMInterfaceBulkImportView(generic.BulkImportView):
queryset = VMInterface.objects.all()
model_form = forms.VMInterfaceImportForm
@register_model_view(VMInterface, 'bulk_edit', path='edit', detail=False)
class VMInterfaceBulkEditView(generic.BulkEditView):
queryset = VMInterface.objects.all()
filterset = filtersets.VMInterfaceFilterSet
@@ -574,11 +598,13 @@ class VMInterfaceBulkEditView(generic.BulkEditView):
form = forms.VMInterfaceBulkEditForm
@register_model_view(VMInterface, 'bulk_rename', path='rename', detail=False)
class VMInterfaceBulkRenameView(generic.BulkRenameView):
queryset = VMInterface.objects.all()
form = forms.VMInterfaceBulkRenameForm
@register_model_view(VMInterface, 'bulk_delete', path='delete', detail=False)
class VMInterfaceBulkDeleteView(generic.BulkDeleteView):
# Ensure child interfaces are deleted prior to their parents
queryset = VMInterface.objects.order_by('virtual_machine', 'parent', CollateAsChar('_name'))
@@ -590,6 +616,7 @@ class VMInterfaceBulkDeleteView(generic.BulkDeleteView):
# Virtual disks
#
@register_model_view(VirtualDisk, 'list', path='', detail=False)
class VirtualDiskListView(generic.ObjectListView):
queryset = VirtualDisk.objects.all()
filterset = filtersets.VirtualDiskFilterSet
@@ -602,6 +629,7 @@ class VirtualDiskView(generic.ObjectView):
queryset = VirtualDisk.objects.all()
@register_model_view(VirtualDisk, 'add', detail=False)
class VirtualDiskCreateView(generic.ComponentCreateView):
queryset = VirtualDisk.objects.all()
form = forms.VirtualDiskCreateForm
@@ -619,11 +647,13 @@ class VirtualDiskDeleteView(generic.ObjectDeleteView):
queryset = VirtualDisk.objects.all()
@register_model_view(VirtualDisk, 'import', detail=False)
class VirtualDiskBulkImportView(generic.BulkImportView):
queryset = VirtualDisk.objects.all()
model_form = forms.VirtualDiskImportForm
@register_model_view(VirtualDisk, 'bulk_edit', path='edit', detail=False)
class VirtualDiskBulkEditView(generic.BulkEditView):
queryset = VirtualDisk.objects.all()
filterset = filtersets.VirtualDiskFilterSet
@@ -631,11 +661,13 @@ class VirtualDiskBulkEditView(generic.BulkEditView):
form = forms.VirtualDiskBulkEditForm
@register_model_view(VirtualDisk, 'bulk_rename', path='rename', detail=False)
class VirtualDiskBulkRenameView(generic.BulkRenameView):
queryset = VirtualDisk.objects.all()
form = forms.VirtualDiskBulkRenameForm
@register_model_view(VirtualDisk, 'bulk_delete', path='delete', detail=False)
class VirtualDiskBulkDeleteView(generic.BulkDeleteView):
queryset = VirtualDisk.objects.all()
filterset = filtersets.VirtualDiskFilterSet