7016 add search indexes

This commit is contained in:
Arthur 2022-09-19 13:44:37 -07:00 committed by jeremystretch
parent fcb1a17db1
commit c6aa03f59d
4 changed files with 114 additions and 1 deletions

View File

@ -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

View 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(),
}

View 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(),
}

View 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(),
}