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
2fad277c89
commit
3afec02055
@ -1,7 +1,7 @@
|
|||||||
import dcim.filtersets
|
import dcim.filtersets
|
||||||
import dcim.tables
|
import dcim.tables
|
||||||
from dcim.models import ASN, VLAN, VRF, Aggregate, IPAddress, Prefix, Service
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from ipam.models import ASN, VLAN, VRF, Aggregate, IPAddress, Prefix, Service
|
||||||
from search.models import SearchMixin
|
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