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
* [#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
---

View File

@ -1,6 +1,6 @@
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.views.generic import View
from rest_framework.response import Response
@ -8,7 +8,7 @@ from rest_framework.reverse import reverse
from rest_framework.views import APIView
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 dcim.filters import (
CableFilter, DeviceFilter, DeviceTypeFilter, PowerFeedFilter, RackFilter, RackGroupFilter, SiteFilter,
@ -49,9 +49,15 @@ SEARCH_TYPES = OrderedDict((
('circuit', {
'permission': 'circuits.view_circuit',
'queryset': Circuit.objects.prefetch_related(
'type', 'provider', 'tenant'
).prefetch_related(
'terminations__site'
'type', 'provider', 'tenant', 'terminations__site'
).annotate(
# 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,
'table': CircuitTable,