From 48dc76a694387a06eba528e2177c2a0c2b03df7a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 21 Mar 2022 16:27:38 -0400 Subject: [PATCH] Closes #8685: Add modules, module types to global search --- netbox/netbox/constants.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/netbox/netbox/constants.py b/netbox/netbox/constants.py index 45de4d5b2..a9436dfb2 100644 --- a/netbox/netbox/constants.py +++ b/netbox/netbox/constants.py @@ -5,13 +5,15 @@ from circuits.filtersets import CircuitFilterSet, ProviderFilterSet, ProviderNet from circuits.models import Circuit, ProviderNetwork, Provider from circuits.tables import CircuitTable, ProviderNetworkTable, ProviderTable from dcim.filtersets import ( - CableFilterSet, DeviceFilterSet, DeviceTypeFilterSet, PowerFeedFilterSet, RackFilterSet, RackReservationFilterSet, - LocationFilterSet, SiteFilterSet, VirtualChassisFilterSet, + CableFilterSet, DeviceFilterSet, DeviceTypeFilterSet, LocationFilterSet, ModuleFilterSet, ModuleTypeFilterSet, + PowerFeedFilterSet, RackFilterSet, RackReservationFilterSet, SiteFilterSet, VirtualChassisFilterSet, +) +from dcim.models import ( + Cable, Device, DeviceType, Location, Module, ModuleType, PowerFeed, Rack, RackReservation, Site, VirtualChassis, ) -from dcim.models import Cable, Device, DeviceType, Location, PowerFeed, Rack, RackReservation, Site, VirtualChassis from dcim.tables import ( - CableTable, DeviceTable, DeviceTypeTable, PowerFeedTable, RackTable, RackReservationTable, LocationTable, SiteTable, - VirtualChassisTable, + CableTable, DeviceTable, DeviceTypeTable, LocationTable, ModuleTable, ModuleTypeTable, PowerFeedTable, RackTable, + RackReservationTable, SiteTable, VirtualChassisTable, ) from ipam.filtersets import ( AggregateFilterSet, ASNFilterSet, IPAddressFilterSet, PrefixFilterSet, VLANFilterSet, VRFFilterSet, @@ -110,6 +112,22 @@ DCIM_TYPES = OrderedDict( 'table': DeviceTable, 'url': 'dcim:device_list', }), + ('moduletype', { + 'queryset': ModuleType.objects.prefetch_related('manufacturer').annotate( + instance_count=count_related(Module, 'module_type') + ), + 'filterset': ModuleTypeFilterSet, + 'table': ModuleTypeTable, + 'url': 'dcim:moduletype_list', + }), + ('module', { + 'queryset': Module.objects.prefetch_related( + 'module_type__manufacturer', 'device', 'module_bay', + ), + 'filterset': ModuleFilterSet, + 'table': ModuleTable, + 'url': 'dcim:module_list', + }), ('virtualchassis', { 'queryset': VirtualChassis.objects.prefetch_related('master').annotate( member_count=count_related(Device, 'virtual_chassis')