1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #3695: Include A/Z termination sites for circuits in global search

This commit is contained in:
Jeremy Stretch
2019-12-27 14:04:03 -05:00
parent 14401c30b6
commit ae9d0d894a
2 changed files with 12 additions and 5 deletions

View File

@ -6,6 +6,7 @@
## Bug Fixes ## Bug Fixes
* [#3695](https://github.com/netbox-community/netbox/issues/3695) - Include A/Z termination sites for circuits in global search
* [#3780](https://github.com/netbox-community/netbox/issues/3780) - Fix AttributeError exception in API docs * [#3780](https://github.com/netbox-community/netbox/issues/3780) - Fix AttributeError exception in API docs
--- ---

View File

@ -1,6 +1,6 @@
from collections import OrderedDict from collections import OrderedDict
from django.db.models import Count, F from django.db.models import Count, F, OuterRef, Subquery
from django.shortcuts import render from django.shortcuts import render
from django.views.generic import View from django.views.generic import View
from rest_framework.response import Response from rest_framework.response import Response
@ -8,7 +8,7 @@ from rest_framework.reverse import reverse
from rest_framework.views import APIView from rest_framework.views import APIView
from circuits.filters import CircuitFilter, ProviderFilter from circuits.filters import CircuitFilter, ProviderFilter
from circuits.models import Circuit, Provider from circuits.models import Circuit, CircuitTermination, Provider
from circuits.tables import CircuitTable, ProviderTable from circuits.tables import CircuitTable, ProviderTable
from dcim.filters import ( from dcim.filters import (
CableFilter, DeviceFilter, DeviceTypeFilter, PowerFeedFilter, RackFilter, RackGroupFilter, SiteFilter, CableFilter, DeviceFilter, DeviceTypeFilter, PowerFeedFilter, RackFilter, RackGroupFilter, SiteFilter,
@ -49,9 +49,15 @@ SEARCH_TYPES = OrderedDict((
('circuit', { ('circuit', {
'permission': 'circuits.view_circuit', 'permission': 'circuits.view_circuit',
'queryset': Circuit.objects.prefetch_related( 'queryset': Circuit.objects.prefetch_related(
'type', 'provider', 'tenant' 'type', 'provider', 'tenant', 'terminations__site'
).prefetch_related( ).annotate(
'terminations__site' # Annotate A/Z terminations
a_side=Subquery(
CircuitTermination.objects.filter(circuit=OuterRef('pk')).filter(term_side='A').values('site__name')[:1]
),
z_side=Subquery(
CircuitTermination.objects.filter(circuit=OuterRef('pk')).filter(term_side='Z').values('site__name')[:1]
),
), ),
'filter': CircuitFilter, 'filter': CircuitFilter,
'table': CircuitTable, 'table': CircuitTable,