mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-24 08:25:17 -06:00
7016 add search indexes
This commit is contained in:
parent
fcb1a17db1
commit
c6aa03f59d
@ -1,7 +1,7 @@
|
||||
import dcim.filtersets
|
||||
import dcim.tables
|
||||
from dcim.models import ASN, VLAN, VRF, Aggregate, IPAddress, Prefix, Service
|
||||
from django.db import models
|
||||
from ipam.models import ASN, VLAN, VRF, Aggregate, IPAddress, Prefix, Service
|
||||
from search.models import SearchMixin
|
||||
|
||||
|
||||
|
31
netbox/tenancy/search_indexes.py
Normal file
31
netbox/tenancy/search_indexes.py
Normal file
@ -0,0 +1,31 @@
|
||||
import dcim.filtersets
|
||||
import dcim.tables
|
||||
from django.db import models
|
||||
from search.models import SearchMixin
|
||||
from tenancy.models import Contact, Tenant
|
||||
|
||||
|
||||
class TenantIndex(SearchMixin):
|
||||
def __init__(self):
|
||||
self.model = Tenant
|
||||
self.queryset = Tenant.objects.prefetch_related('group')
|
||||
self.filterset = tenancy.filtersets.TenantFilterSet
|
||||
self.table = tenancy.tables.TenantTable
|
||||
self.url = 'tenancy:tenant_list'
|
||||
|
||||
|
||||
class ContactIndex(SearchMixin):
|
||||
def __init__(self):
|
||||
self.model = Contact
|
||||
self.queryset = Contact.objects.prefetch_related('group', 'assignments').annotate(
|
||||
assignment_count=count_related(ContactAssignment, 'contact')
|
||||
)
|
||||
self.filterset = tenancy.filtersets.ContactFilterSet
|
||||
self.table = tenancy.tables.ContactTable
|
||||
self.url = 'tenancy:contact_list'
|
||||
|
||||
|
||||
TENANCY_SEARCH_TYPES = {
|
||||
'tenant': TenancyIndex(),
|
||||
'contact': ContactIndex(),
|
||||
}
|
51
netbox/virtualization/search_indexes.py
Normal file
51
netbox/virtualization/search_indexes.py
Normal file
@ -0,0 +1,51 @@
|
||||
import dcim.filtersets
|
||||
import dcim.tables
|
||||
from dcim.models import (
|
||||
Cable,
|
||||
Device,
|
||||
DeviceType,
|
||||
Interface,
|
||||
Location,
|
||||
Module,
|
||||
ModuleType,
|
||||
PowerFeed,
|
||||
Rack,
|
||||
RackReservation,
|
||||
Site,
|
||||
VirtualChassis,
|
||||
)
|
||||
from django.db import models
|
||||
from search.models import SearchMixin
|
||||
|
||||
|
||||
class ClusterIndex(SearchMixin):
|
||||
def __init__(self):
|
||||
self.model = Cluster
|
||||
self.queryset = Cluster.objects.prefetch_related('type', 'group').annotate(
|
||||
device_count=count_related(Device, 'cluster'), vm_count=count_related(VirtualMachine, 'cluster')
|
||||
)
|
||||
self.filterset = virtualization.filtersets.ClusterFilterSet
|
||||
self.table = virtualization.tables.ClusterTable
|
||||
self.url = 'virtualization:cluster_list'
|
||||
|
||||
|
||||
class VirtualMachineIndex(SearchMixin):
|
||||
def __init__(self):
|
||||
self.model = VirtualMachine
|
||||
self.queryset = VirtualMachine.objects.prefetch_related(
|
||||
'cluster',
|
||||
'tenant',
|
||||
'tenant__group',
|
||||
'platform',
|
||||
'primary_ip4',
|
||||
'primary_ip6',
|
||||
)
|
||||
self.filterset = virtualization.filtersets.VirtualMachineFilterSet
|
||||
self.table = virtualization.tables.VirtualMachineTable
|
||||
self.url = 'virtualization:virtualmachine_list'
|
||||
|
||||
|
||||
VIRTUALIZATION_SEARCH_TYPES = {
|
||||
'cluster': ClusterIndex(),
|
||||
'virtualmachine': VirtualMachineIndex(),
|
||||
}
|
31
netbox/wireless/search_indexes.py
Normal file
31
netbox/wireless/search_indexes.py
Normal file
@ -0,0 +1,31 @@
|
||||
import dcim.filtersets
|
||||
import dcim.tables
|
||||
from django.db import models
|
||||
from search.models import SearchMixin
|
||||
from wireless.models import WirelessLAN, WirelessLink
|
||||
|
||||
|
||||
class WirelessLANIndex(SearchMixin):
|
||||
def __init__(self):
|
||||
self.model = WirelessLAN
|
||||
self.queryset = WirelessLAN.objects.prefetch_related('group', 'vlan').annotate(
|
||||
interface_count=count_related(Interface, 'wireless_lans')
|
||||
)
|
||||
self.filterset = wireless.filtersets.WirelessLANFilterSet
|
||||
self.table = wireless.tables.WirelessLANTable
|
||||
self.url = 'wireless:wirelesslan_list'
|
||||
|
||||
|
||||
class WirelessLinkIndex(SearchMixin):
|
||||
def __init__(self):
|
||||
self.model = WirelessLink
|
||||
self.queryset = WirelessLink.objects.prefetch_related('interface_a__device', 'interface_b__device')
|
||||
self.filterset = wireless.filtersets.WirelessLinkFilterSet
|
||||
self.table = wireless.tables.WirelessLinkTable
|
||||
self.url = 'wireless:wirelesslink_list'
|
||||
|
||||
|
||||
WIRELESS_SEARCH_TYPES = {
|
||||
'wirelesslan': WirelessLANIndex(),
|
||||
'wirelesslink': WirelessLinkIndex(),
|
||||
}
|
Loading…
Reference in New Issue
Block a user