Просмотр исходного кода

Update cluster VM/device views to use ObjectChildrenView

jeremystretch 4 лет назад
Родитель
Сommit
59ee30f056

+ 1 - 1
netbox/templates/virtualization/cluster/devices.html

@@ -12,7 +12,7 @@
       <form action="{% url 'virtualization:cluster_remove_devices' pk=object.pk %}" method="post">
       <form action="{% url 'virtualization:cluster_remove_devices' pk=object.pk %}" method="post">
       {% csrf_token %}
       {% csrf_token %}
       <div class="card-body table-responsive">
       <div class="card-body table-responsive">
-        {% render_table devices_table 'inc/table.html' %}
+        {% render_table table 'inc/table.html' %}
       </div>
       </div>
       {% if perms.virtualization.change_cluster %}
       {% if perms.virtualization.change_cluster %}
         <div class="card-footer noprint">
         <div class="card-footer noprint">

+ 1 - 1
netbox/templates/virtualization/cluster/virtual_machines.html

@@ -10,7 +10,7 @@
         Virtual Machines
         Virtual Machines
       </h5>
       </h5>
       <div class="card-body table-responsive">
       <div class="card-body table-responsive">
-        {% render_table virtualmachines_table 'inc/table.html' %}
+        {% render_table table 'inc/table.html' %}
       </div>
       </div>
     </div>
     </div>
   </div>
   </div>

+ 12 - 18
netbox/virtualization/views.py

@@ -161,38 +161,32 @@ class ClusterView(generic.ObjectView):
     queryset = Cluster.objects.all()
     queryset = Cluster.objects.all()
 
 
 
 
-class ClusterVirtualMachinesView(generic.ObjectView):
+class ClusterVirtualMachinesView(generic.ObjectChildrenView):
     queryset = Cluster.objects.all()
     queryset = Cluster.objects.all()
+    child_model = VirtualMachine
+    table = tables.VirtualMachineTable
     template_name = 'virtualization/cluster/virtual_machines.html'
     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 {
         return {
-            'virtualmachines_table': virtualmachines_table,
             'active_tab': 'virtual-machines',
             'active_tab': 'virtual-machines',
         }
         }
 
 
 
 
-class ClusterDevicesView(generic.ObjectView):
+class ClusterDevicesView(generic.ObjectChildrenView):
     queryset = Cluster.objects.all()
     queryset = Cluster.objects.all()
+    child_model = Device
+    table = DeviceTable
     template_name = 'virtualization/cluster/devices.html'
     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 {
         return {
-            'devices_table': devices_table,
             'active_tab': 'devices',
             'active_tab': 'devices',
         }
         }