Add GetRelatedModelsMixin to ClusterView

This commit is contained in:
Renato Almeida de Oliveira Zaroubin 2025-04-10 02:20:49 +00:00 committed by Jeremy Stretch
parent 94d19e8f15
commit 1f79411878
2 changed files with 22 additions and 7 deletions

View File

@ -81,6 +81,7 @@
</tr>
</table>
</div>
{% include 'inc/panels/related_objects.html' %}
{% include 'inc/panels/custom_fields.html' %}
{% include 'inc/panels/tags.html' %}
{% plugin_right_page object %}

View File

@ -1,4 +1,5 @@
from django.contrib import messages
from django.contrib.contenttypes.models import ContentType
from django.db import transaction
from django.db.models import Prefetch, Sum
from django.shortcuts import get_object_or_404, redirect, render
@ -10,7 +11,7 @@ from dcim.forms import DeviceFilterForm
from dcim.models import Device
from dcim.tables import DeviceTable
from extras.views import ObjectConfigContextView, ObjectRenderConfigView
from ipam.models import IPAddress
from ipam.models import IPAddress, VLANGroup
from ipam.tables import InterfaceVLANTable, VLANTranslationRuleTable
from netbox.constants import DEFAULT_ACTION_PERMISSIONS
from netbox.views import generic
@ -168,15 +169,28 @@ class ClusterListView(generic.ObjectListView):
@register_model_view(Cluster)
class ClusterView(generic.ObjectView):
class ClusterView(GetRelatedModelsMixin, generic.ObjectView):
queryset = Cluster.objects.all()
def get_extra_context(self, request, instance):
return instance.virtual_machines.aggregate(
vcpus_sum=Sum('vcpus'),
memory_sum=Sum('memory'),
disk_sum=Sum('disk')
)
return {
**instance.virtual_machines.aggregate(
vcpus_sum=Sum('vcpus'),
memory_sum=Sum('memory'),
disk_sum=Sum('disk')
),
'related_models': self.get_related_models(
request,
instance,
omit=(),
extra=(
(VLANGroup.objects.restrict(request.user, 'view').filter(
scope_type=ContentType.objects.get_for_model(Cluster),
scope_id=instance.pk
), 'cluster'),
)
),
}
@register_model_view(Cluster, 'virtualmachines', path='virtual-machines')