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

Prefetch Tenant Group in global search

Configure the prefetch to also include the Tenant Group, avoids additional
database queries when the Tenant Group column is to be rendered.

NOTE: If no personalisation of the global search tables should be done,
this commit can be reverted.
This commit is contained in:
Kim Johansson
2022-07-10 15:38:21 +02:00
parent e6bfde1397
commit 69a22ffe5e

View File

@ -34,7 +34,7 @@ CIRCUIT_TYPES = OrderedDict(
}), }),
('circuit', { ('circuit', {
'queryset': Circuit.objects.prefetch_related( 'queryset': Circuit.objects.prefetch_related(
'type', 'provider', 'tenant', 'terminations__site' 'type', 'provider', 'tenant', 'tenant__group', 'terminations__site'
), ),
'filterset': circuits.filtersets.CircuitFilterSet, 'filterset': circuits.filtersets.CircuitFilterSet,
'table': circuits.tables.CircuitTable, 'table': circuits.tables.CircuitTable,
@ -53,13 +53,13 @@ CIRCUIT_TYPES = OrderedDict(
DCIM_TYPES = OrderedDict( DCIM_TYPES = OrderedDict(
( (
('site', { ('site', {
'queryset': Site.objects.prefetch_related('region', 'tenant'), 'queryset': Site.objects.prefetch_related('region', 'tenant', 'tenant__group'),
'filterset': dcim.filtersets.SiteFilterSet, 'filterset': dcim.filtersets.SiteFilterSet,
'table': dcim.tables.SiteTable, 'table': dcim.tables.SiteTable,
'url': 'dcim:site_list', 'url': 'dcim:site_list',
}), }),
('rack', { ('rack', {
'queryset': Rack.objects.prefetch_related('site', 'location', 'tenant', 'role').annotate( 'queryset': Rack.objects.prefetch_related('site', 'location', 'tenant', 'tenant__group', 'role').annotate(
device_count=count_related(Device, 'rack') device_count=count_related(Device, 'rack')
), ),
'filterset': dcim.filtersets.RackFilterSet, 'filterset': dcim.filtersets.RackFilterSet,
@ -100,7 +100,7 @@ DCIM_TYPES = OrderedDict(
}), }),
('device', { ('device', {
'queryset': Device.objects.prefetch_related( 'queryset': Device.objects.prefetch_related(
'device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack', 'primary_ip4', 'primary_ip6', 'device_type__manufacturer', 'device_role', 'tenant', 'tenant__group', 'site', 'rack', 'primary_ip4', 'primary_ip6',
), ),
'filterset': dcim.filtersets.DeviceFilterSet, 'filterset': dcim.filtersets.DeviceFilterSet,
'table': dcim.tables.DeviceTable, 'table': dcim.tables.DeviceTable,
@ -148,7 +148,7 @@ DCIM_TYPES = OrderedDict(
IPAM_TYPES = OrderedDict( IPAM_TYPES = OrderedDict(
( (
('vrf', { ('vrf', {
'queryset': VRF.objects.prefetch_related('tenant'), 'queryset': VRF.objects.prefetch_related('tenant', 'tenant__group'),
'filterset': ipam.filtersets.VRFFilterSet, 'filterset': ipam.filtersets.VRFFilterSet,
'table': ipam.tables.VRFTable, 'table': ipam.tables.VRFTable,
'url': 'ipam:vrf_list', 'url': 'ipam:vrf_list',
@ -160,25 +160,25 @@ IPAM_TYPES = OrderedDict(
'url': 'ipam:aggregate_list', 'url': 'ipam:aggregate_list',
}), }),
('prefix', { ('prefix', {
'queryset': Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role'), 'queryset': Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'tenant__group', 'vlan', 'role'),
'filterset': ipam.filtersets.PrefixFilterSet, 'filterset': ipam.filtersets.PrefixFilterSet,
'table': ipam.tables.PrefixTable, 'table': ipam.tables.PrefixTable,
'url': 'ipam:prefix_list', 'url': 'ipam:prefix_list',
}), }),
('ipaddress', { ('ipaddress', {
'queryset': IPAddress.objects.prefetch_related('vrf__tenant', 'tenant'), 'queryset': IPAddress.objects.prefetch_related('vrf__tenant', 'tenant', 'tenant__group'),
'filterset': ipam.filtersets.IPAddressFilterSet, 'filterset': ipam.filtersets.IPAddressFilterSet,
'table': ipam.tables.IPAddressTable, 'table': ipam.tables.IPAddressTable,
'url': 'ipam:ipaddress_list', 'url': 'ipam:ipaddress_list',
}), }),
('vlan', { ('vlan', {
'queryset': VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role'), 'queryset': VLAN.objects.prefetch_related('site', 'group', 'tenant', 'tenant__group', 'role'),
'filterset': ipam.filtersets.VLANFilterSet, 'filterset': ipam.filtersets.VLANFilterSet,
'table': ipam.tables.VLANTable, 'table': ipam.tables.VLANTable,
'url': 'ipam:vlan_list', 'url': 'ipam:vlan_list',
}), }),
('asn', { ('asn', {
'queryset': ASN.objects.prefetch_related('rir', 'tenant'), 'queryset': ASN.objects.prefetch_related('rir', 'tenant', 'tenant__group'),
'filterset': ipam.filtersets.ASNFilterSet, 'filterset': ipam.filtersets.ASNFilterSet,
'table': ipam.tables.ASNTable, 'table': ipam.tables.ASNTable,
'url': 'ipam:asn_list', 'url': 'ipam:asn_list',
@ -223,7 +223,7 @@ VIRTUALIZATION_TYPES = OrderedDict(
}), }),
('virtualmachine', { ('virtualmachine', {
'queryset': VirtualMachine.objects.prefetch_related( 'queryset': VirtualMachine.objects.prefetch_related(
'cluster', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'cluster', 'tenant', 'tenant__group', 'platform', 'primary_ip4', 'primary_ip6',
), ),
'filterset': virtualization.filtersets.VirtualMachineFilterSet, 'filterset': virtualization.filtersets.VirtualMachineFilterSet,
'table': virtualization.tables.VirtualMachineTable, 'table': virtualization.tables.VirtualMachineTable,