1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Clean up related objects for sites, tenants

This commit is contained in:
jeremystretch
2023-01-25 12:26:38 -05:00
committed by jeremystretch
parent 48d6d7279d
commit 0c9e7aa074
5 changed files with 99 additions and 294 deletions

View File

@@ -1,5 +1,6 @@
from django.contrib.contenttypes.models import ContentType
from django.shortcuts import get_object_or_404
from django.utils.translation import gettext as _
from circuits.models import Circuit
from dcim.models import Cable, Device, Location, Rack, RackReservation, Site, VirtualDeviceContext
@@ -92,31 +93,36 @@ class TenantView(generic.ObjectView):
queryset = Tenant.objects.all()
def get_extra_context(self, request, instance):
stats = {
'site_count': Site.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'rack_count': Rack.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'rackreservation_count': RackReservation.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'location_count': Location.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'device_count': Device.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'vdc_count': VirtualDeviceContext.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'vrf_count': VRF.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'aggregate_count': Aggregate.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'prefix_count': Prefix.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'iprange_count': IPRange.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'ipaddress_count': IPAddress.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'vlan_count': VLAN.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'l2vpn_count': L2VPN.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'circuit_count': Circuit.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'virtualmachine_count': VirtualMachine.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'cluster_count': Cluster.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'cable_count': Cable.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'asn_count': ASN.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'wirelesslan_count': WirelessLAN.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
'wirelesslink_count': WirelessLink.objects.restrict(request.user, 'view').filter(tenant=instance).count(),
}
related_models = [
# DCIM
Site.objects.restrict(request.user, 'view').filter(tenant=instance),
Rack.objects.restrict(request.user, 'view').filter(tenant=instance),
RackReservation.objects.restrict(request.user, 'view').filter(tenant=instance),
Location.objects.restrict(request.user, 'view').filter(tenant=instance),
Device.objects.restrict(request.user, 'view').filter(tenant=instance),
VirtualDeviceContext.objects.restrict(request.user, 'view').filter(tenant=instance),
Cable.objects.restrict(request.user, 'view').filter(tenant=instance),
# IPAM
VRF.objects.restrict(request.user, 'view').filter(tenant=instance),
Aggregate.objects.restrict(request.user, 'view').filter(tenant=instance),
Prefix.objects.restrict(request.user, 'view').filter(tenant=instance),
IPRange.objects.restrict(request.user, 'view').filter(tenant=instance),
IPAddress.objects.restrict(request.user, 'view').filter(tenant=instance),
ASN.objects.restrict(request.user, 'view').filter(tenant=instance),
VLAN.objects.restrict(request.user, 'view').filter(tenant=instance),
L2VPN.objects.restrict(request.user, 'view').filter(tenant=instance),
# Circuits
Circuit.objects.restrict(request.user, 'view').filter(tenant=instance),
# Virtualization
VirtualMachine.objects.restrict(request.user, 'view').filter(tenant=instance),
Cluster.objects.restrict(request.user, 'view').filter(tenant=instance),
# Wireless
WirelessLAN.objects.restrict(request.user, 'view').filter(tenant=instance),
WirelessLink.objects.restrict(request.user, 'view').filter(tenant=instance),
]
return {
'stats': stats,
'related_models': related_models,
}