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:
@ -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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -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,
|
||||||
|
Reference in New Issue
Block a user