From 59ee30f0561658a1d39f5f3c0791a7eff2ee9023 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 14 Dec 2021 14:08:44 -0500 Subject: [PATCH] Update cluster VM/device views to use ObjectChildrenView --- .../virtualization/cluster/devices.html | 2 +- .../cluster/virtual_machines.html | 2 +- netbox/virtualization/views.py | 30 ++++++++----------- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/netbox/templates/virtualization/cluster/devices.html b/netbox/templates/virtualization/cluster/devices.html index 9f4b7fc3e..fbaabd8f1 100644 --- a/netbox/templates/virtualization/cluster/devices.html +++ b/netbox/templates/virtualization/cluster/devices.html @@ -12,7 +12,7 @@
{% csrf_token %}
- {% render_table devices_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.virtualization.change_cluster %} diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index 64a34f4c2..e260384fd 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -161,38 +161,32 @@ class ClusterView(generic.ObjectView): queryset = Cluster.objects.all() -class ClusterVirtualMachinesView(generic.ObjectView): +class ClusterVirtualMachinesView(generic.ObjectChildrenView): queryset = Cluster.objects.all() + child_model = VirtualMachine + table = tables.VirtualMachineTable template_name = 'virtualization/cluster/virtual_machines.html' - def get_extra_context(self, request, instance): - virtualmachines = VirtualMachine.objects.restrict(request.user, 'view').filter(cluster=instance) - virtualmachines_table = tables.VirtualMachineTable( - virtualmachines, - exclude=('cluster',), - orderable=False - ) + def get_children(self, request, parent): + return VirtualMachine.objects.restrict(request.user, 'view').filter(cluster=parent) + def get_extra_context(self, request, instance): return { - 'virtualmachines_table': virtualmachines_table, 'active_tab': 'virtual-machines', } -class ClusterDevicesView(generic.ObjectView): +class ClusterDevicesView(generic.ObjectChildrenView): queryset = Cluster.objects.all() + child_model = Device + table = DeviceTable template_name = 'virtualization/cluster/devices.html' - def get_extra_context(self, request, instance): - devices = Device.objects.restrict(request.user, 'view').filter(cluster=instance).prefetch_related( - 'site', 'rack', 'tenant', 'device_type__manufacturer' - ) - devices_table = DeviceTable(list(devices), orderable=False) - if request.user.has_perm('virtualization.change_cluster'): - devices_table.columns.show('pk') + def get_children(self, request, parent): + return Device.objects.restrict(request.user, 'view').filter(cluster=parent) + def get_extra_context(self, request, instance): return { - 'devices_table': devices_table, 'active_tab': 'devices', }