Bläddra i källkod

adds vms tab on device object view #15328

Abhimanyu Saharan 1 år sedan
förälder
incheckning
08923d77d1
1 ändrade filer med 21 tillägg och 0 borttagningar
  1. 21 0
      netbox/dcim/views.py

+ 21 - 0
netbox/dcim/views.py

@@ -28,7 +28,9 @@ from utilities.permissions import get_permission_for_model
 from utilities.query import count_related
 from utilities.query import count_related
 from utilities.query_functions import CollateAsChar
 from utilities.query_functions import CollateAsChar
 from utilities.views import GetReturnURLMixin, ObjectPermissionRequiredMixin, ViewTab, register_model_view
 from utilities.views import GetReturnURLMixin, ObjectPermissionRequiredMixin, ViewTab, register_model_view
+from virtualization.filtersets import VirtualMachineFilterSet
 from virtualization.models import VirtualMachine
 from virtualization.models import VirtualMachine
+from virtualization.tables import VirtualMachineTable
 from . import filtersets, forms, tables
 from . import filtersets, forms, tables
 from .choices import DeviceFaceChoices
 from .choices import DeviceFaceChoices
 from .models import *
 from .models import *
@@ -2085,6 +2087,25 @@ class DeviceRenderConfigView(generic.ObjectView):
         }
         }
 
 
 
 
+@register_model_view(Device, 'virtual-machines')
+class DeviceVirtualMachinesView(generic.ObjectChildrenView):
+    queryset = Device.objects.all()
+    child_model = VirtualMachine
+    table = VirtualMachineTable
+    filterset = VirtualMachineFilterSet
+    template_name = 'generic/object_children.html'
+    tab = ViewTab(
+        label=_('Virtual Machines'),
+        badge=lambda obj: VirtualMachine.objects.filter(cluster=obj.cluster, device=obj).count(),
+        weight=2200,
+        hide_if_empty=True,
+        permission='virtualization.view_virtualmachine'
+    )
+
+    def get_children(self, request, parent):
+        return self.child_model.objects.restrict(request.user, 'view').filter(cluster=parent.cluster, device=parent)
+
+
 class DeviceBulkImportView(generic.BulkImportView):
 class DeviceBulkImportView(generic.BulkImportView):
     queryset = Device.objects.all()
     queryset = Device.objects.all()
     model_form = forms.DeviceImportForm
     model_form = forms.DeviceImportForm