mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 17:08:41 -06:00
Fixes #1189: Enforce consistent ordering of objects returned by a global search
This commit is contained in:
parent
657eed1dc9
commit
f2846af4ec
@ -1,3 +1,4 @@
|
|||||||
|
from collections import OrderedDict
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
@ -27,91 +28,91 @@ from .forms import SearchForm
|
|||||||
|
|
||||||
|
|
||||||
SEARCH_MAX_RESULTS = 15
|
SEARCH_MAX_RESULTS = 15
|
||||||
SEARCH_TYPES = {
|
SEARCH_TYPES = OrderedDict((
|
||||||
# Circuits
|
# Circuits
|
||||||
'provider': {
|
('provider', {
|
||||||
'queryset': Provider.objects.all(),
|
'queryset': Provider.objects.all(),
|
||||||
'filter': ProviderFilter,
|
'filter': ProviderFilter,
|
||||||
'table': ProviderSearchTable,
|
'table': ProviderSearchTable,
|
||||||
'url': 'circuits:provider_list',
|
'url': 'circuits:provider_list',
|
||||||
},
|
}),
|
||||||
'circuit': {
|
('circuit', {
|
||||||
'queryset': Circuit.objects.select_related('type', 'provider', 'tenant').prefetch_related('terminations__site'),
|
'queryset': Circuit.objects.select_related('type', 'provider', 'tenant').prefetch_related('terminations__site'),
|
||||||
'filter': CircuitFilter,
|
'filter': CircuitFilter,
|
||||||
'table': CircuitSearchTable,
|
'table': CircuitSearchTable,
|
||||||
'url': 'circuits:circuit_list',
|
'url': 'circuits:circuit_list',
|
||||||
},
|
}),
|
||||||
# DCIM
|
# DCIM
|
||||||
'site': {
|
('site', {
|
||||||
'queryset': Site.objects.select_related('region', 'tenant'),
|
'queryset': Site.objects.select_related('region', 'tenant'),
|
||||||
'filter': SiteFilter,
|
'filter': SiteFilter,
|
||||||
'table': SiteSearchTable,
|
'table': SiteSearchTable,
|
||||||
'url': 'dcim:site_list',
|
'url': 'dcim:site_list',
|
||||||
},
|
}),
|
||||||
'rack': {
|
('rack', {
|
||||||
'queryset': Rack.objects.select_related('site', 'group', 'tenant', 'role'),
|
'queryset': Rack.objects.select_related('site', 'group', 'tenant', 'role'),
|
||||||
'filter': RackFilter,
|
'filter': RackFilter,
|
||||||
'table': RackSearchTable,
|
'table': RackSearchTable,
|
||||||
'url': 'dcim:rack_list',
|
'url': 'dcim:rack_list',
|
||||||
},
|
}),
|
||||||
'devicetype': {
|
('devicetype', {
|
||||||
'queryset': DeviceType.objects.select_related('manufacturer'),
|
'queryset': DeviceType.objects.select_related('manufacturer'),
|
||||||
'filter': DeviceTypeFilter,
|
'filter': DeviceTypeFilter,
|
||||||
'table': DeviceTypeSearchTable,
|
'table': DeviceTypeSearchTable,
|
||||||
'url': 'dcim:devicetype_list',
|
'url': 'dcim:devicetype_list',
|
||||||
},
|
}),
|
||||||
'device': {
|
('device', {
|
||||||
'queryset': Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack'),
|
'queryset': Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack'),
|
||||||
'filter': DeviceFilter,
|
'filter': DeviceFilter,
|
||||||
'table': DeviceSearchTable,
|
'table': DeviceSearchTable,
|
||||||
'url': 'dcim:device_list',
|
'url': 'dcim:device_list',
|
||||||
},
|
}),
|
||||||
# IPAM
|
# IPAM
|
||||||
'vrf': {
|
('vrf', {
|
||||||
'queryset': VRF.objects.select_related('tenant'),
|
'queryset': VRF.objects.select_related('tenant'),
|
||||||
'filter': VRFFilter,
|
'filter': VRFFilter,
|
||||||
'table': VRFSearchTable,
|
'table': VRFSearchTable,
|
||||||
'url': 'ipam:vrf_list',
|
'url': 'ipam:vrf_list',
|
||||||
},
|
}),
|
||||||
'aggregate': {
|
('aggregate', {
|
||||||
'queryset': Aggregate.objects.select_related('rir'),
|
'queryset': Aggregate.objects.select_related('rir'),
|
||||||
'filter': AggregateFilter,
|
'filter': AggregateFilter,
|
||||||
'table': AggregateSearchTable,
|
'table': AggregateSearchTable,
|
||||||
'url': 'ipam:aggregate_list',
|
'url': 'ipam:aggregate_list',
|
||||||
},
|
}),
|
||||||
'prefix': {
|
('prefix', {
|
||||||
'queryset': Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role'),
|
'queryset': Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role'),
|
||||||
'filter': PrefixFilter,
|
'filter': PrefixFilter,
|
||||||
'table': PrefixSearchTable,
|
'table': PrefixSearchTable,
|
||||||
'url': 'ipam:prefix_list',
|
'url': 'ipam:prefix_list',
|
||||||
},
|
}),
|
||||||
'ipaddress': {
|
('ipaddress', {
|
||||||
'queryset': IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device'),
|
'queryset': IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device'),
|
||||||
'filter': IPAddressFilter,
|
'filter': IPAddressFilter,
|
||||||
'table': IPAddressSearchTable,
|
'table': IPAddressSearchTable,
|
||||||
'url': 'ipam:ipaddress_list',
|
'url': 'ipam:ipaddress_list',
|
||||||
},
|
}),
|
||||||
'vlan': {
|
('vlan', {
|
||||||
'queryset': VLAN.objects.select_related('site', 'group', 'tenant', 'role'),
|
'queryset': VLAN.objects.select_related('site', 'group', 'tenant', 'role'),
|
||||||
'filter': VLANFilter,
|
'filter': VLANFilter,
|
||||||
'table': VLANSearchTable,
|
'table': VLANSearchTable,
|
||||||
'url': 'ipam:vlan_list',
|
'url': 'ipam:vlan_list',
|
||||||
},
|
}),
|
||||||
# Secrets
|
# Secrets
|
||||||
'secret': {
|
('secret', {
|
||||||
'queryset': Secret.objects.select_related('role', 'device'),
|
'queryset': Secret.objects.select_related('role', 'device'),
|
||||||
'filter': SecretFilter,
|
'filter': SecretFilter,
|
||||||
'table': SecretSearchTable,
|
'table': SecretSearchTable,
|
||||||
'url': 'secrets:secret_list',
|
'url': 'secrets:secret_list',
|
||||||
},
|
}),
|
||||||
# Tenancy
|
# Tenancy
|
||||||
'tenant': {
|
('tenant', {
|
||||||
'queryset': Tenant.objects.select_related('group'),
|
'queryset': Tenant.objects.select_related('group'),
|
||||||
'filter': TenantFilter,
|
'filter': TenantFilter,
|
||||||
'table': TenantSearchTable,
|
'table': TenantSearchTable,
|
||||||
'url': 'tenancy:tenant_list',
|
'url': 'tenancy:tenant_list',
|
||||||
},
|
}),
|
||||||
}
|
))
|
||||||
|
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
|
Loading…
Reference in New Issue
Block a user