|
|
@@ -3,11 +3,11 @@ from django.db.models import Q
|
|
|
from django.utils.translation import gettext as _
|
|
|
|
|
|
from dcim.filtersets import CabledObjectFilterSet
|
|
|
-from dcim.models import Region, Site, SiteGroup
|
|
|
+from dcim.models import Location, Region, Site, SiteGroup
|
|
|
from ipam.models import ASN
|
|
|
from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet
|
|
|
from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet
|
|
|
-from utilities.filters import TreeNodeMultipleChoiceFilter
|
|
|
+from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter
|
|
|
from .choices import *
|
|
|
from .models import *
|
|
|
|
|
|
@@ -26,37 +26,37 @@ __all__ = (
|
|
|
class ProviderFilterSet(NetBoxModelFilterSet, ContactModelFilterSet):
|
|
|
region_id = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=Region.objects.all(),
|
|
|
- field_name='circuits__terminations__site__region',
|
|
|
+ field_name='circuits__terminations___region',
|
|
|
lookup_expr='in',
|
|
|
label=_('Region (ID)'),
|
|
|
)
|
|
|
region = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=Region.objects.all(),
|
|
|
- field_name='circuits__terminations__site__region',
|
|
|
+ field_name='circuits__terminations___region',
|
|
|
lookup_expr='in',
|
|
|
to_field_name='slug',
|
|
|
label=_('Region (slug)'),
|
|
|
)
|
|
|
site_group_id = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=SiteGroup.objects.all(),
|
|
|
- field_name='circuits__terminations__site__group',
|
|
|
+ field_name='circuits__terminations___site_group',
|
|
|
lookup_expr='in',
|
|
|
label=_('Site group (ID)'),
|
|
|
)
|
|
|
site_group = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=SiteGroup.objects.all(),
|
|
|
- field_name='circuits__terminations__site__group',
|
|
|
+ field_name='circuits__terminations___site_group',
|
|
|
lookup_expr='in',
|
|
|
to_field_name='slug',
|
|
|
label=_('Site group (slug)'),
|
|
|
)
|
|
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='circuits__terminations__site',
|
|
|
+ field_name='circuits__terminations___site',
|
|
|
queryset=Site.objects.all(),
|
|
|
label=_('Site'),
|
|
|
)
|
|
|
site = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='circuits__terminations__site__slug',
|
|
|
+ field_name='circuits__terminations___site__slug',
|
|
|
queryset=Site.objects.all(),
|
|
|
to_field_name='slug',
|
|
|
label=_('Site (slug)'),
|
|
|
@@ -173,7 +173,7 @@ class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilte
|
|
|
label=_('Provider account (account)'),
|
|
|
)
|
|
|
provider_network_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='terminations__provider_network',
|
|
|
+ field_name='terminations___provider_network',
|
|
|
queryset=ProviderNetwork.objects.all(),
|
|
|
label=_('Provider network (ID)'),
|
|
|
)
|
|
|
@@ -193,37 +193,37 @@ class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilte
|
|
|
)
|
|
|
region_id = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=Region.objects.all(),
|
|
|
- field_name='terminations__site__region',
|
|
|
+ field_name='terminations___region',
|
|
|
lookup_expr='in',
|
|
|
label=_('Region (ID)'),
|
|
|
)
|
|
|
region = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=Region.objects.all(),
|
|
|
- field_name='terminations__site__region',
|
|
|
+ field_name='terminations___region',
|
|
|
lookup_expr='in',
|
|
|
to_field_name='slug',
|
|
|
label=_('Region (slug)'),
|
|
|
)
|
|
|
site_group_id = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=SiteGroup.objects.all(),
|
|
|
- field_name='terminations__site__group',
|
|
|
+ field_name='terminations___site_group',
|
|
|
lookup_expr='in',
|
|
|
label=_('Site group (ID)'),
|
|
|
)
|
|
|
site_group = TreeNodeMultipleChoiceFilter(
|
|
|
queryset=SiteGroup.objects.all(),
|
|
|
- field_name='terminations__site__group',
|
|
|
+ field_name='terminations___site_group',
|
|
|
lookup_expr='in',
|
|
|
to_field_name='slug',
|
|
|
label=_('Site group (slug)'),
|
|
|
)
|
|
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='terminations__site',
|
|
|
+ field_name='terminations___site',
|
|
|
queryset=Site.objects.all(),
|
|
|
label=_('Site (ID)'),
|
|
|
)
|
|
|
site = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='terminations__site__slug',
|
|
|
+ field_name='terminations___site__slug',
|
|
|
queryset=Site.objects.all(),
|
|
|
to_field_name='slug',
|
|
|
label=_('Site (slug)'),
|
|
|
@@ -263,18 +263,60 @@ class CircuitTerminationFilterSet(NetBoxModelFilterSet, CabledObjectFilterSet):
|
|
|
queryset=Circuit.objects.all(),
|
|
|
label=_('Circuit'),
|
|
|
)
|
|
|
+ termination_type = ContentTypeFilter()
|
|
|
+ region_id = TreeNodeMultipleChoiceFilter(
|
|
|
+ queryset=Region.objects.all(),
|
|
|
+ field_name='_region',
|
|
|
+ lookup_expr='in',
|
|
|
+ label=_('Region (ID)'),
|
|
|
+ )
|
|
|
+ region = TreeNodeMultipleChoiceFilter(
|
|
|
+ queryset=Region.objects.all(),
|
|
|
+ field_name='_region',
|
|
|
+ lookup_expr='in',
|
|
|
+ to_field_name='slug',
|
|
|
+ label=_('Region (slug)'),
|
|
|
+ )
|
|
|
+ site_group_id = TreeNodeMultipleChoiceFilter(
|
|
|
+ queryset=SiteGroup.objects.all(),
|
|
|
+ field_name='_site_group',
|
|
|
+ lookup_expr='in',
|
|
|
+ label=_('Site group (ID)'),
|
|
|
+ )
|
|
|
+ site_group = TreeNodeMultipleChoiceFilter(
|
|
|
+ queryset=SiteGroup.objects.all(),
|
|
|
+ field_name='_site_group',
|
|
|
+ lookup_expr='in',
|
|
|
+ to_field_name='slug',
|
|
|
+ label=_('Site group (slug)'),
|
|
|
+ )
|
|
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
queryset=Site.objects.all(),
|
|
|
+ field_name='_site',
|
|
|
label=_('Site (ID)'),
|
|
|
)
|
|
|
site = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='site__slug',
|
|
|
+ field_name='_site__slug',
|
|
|
queryset=Site.objects.all(),
|
|
|
to_field_name='slug',
|
|
|
label=_('Site (slug)'),
|
|
|
)
|
|
|
+ location_id = TreeNodeMultipleChoiceFilter(
|
|
|
+ queryset=Location.objects.all(),
|
|
|
+ field_name='_location',
|
|
|
+ lookup_expr='in',
|
|
|
+ label=_('Location (ID)'),
|
|
|
+ )
|
|
|
+ location = TreeNodeMultipleChoiceFilter(
|
|
|
+ queryset=Location.objects.all(),
|
|
|
+ field_name='_location',
|
|
|
+ lookup_expr='in',
|
|
|
+ to_field_name='slug',
|
|
|
+ label=_('Location (slug)'),
|
|
|
+ )
|
|
|
provider_network_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
queryset=ProviderNetwork.objects.all(),
|
|
|
+ field_name='_provider_network',
|
|
|
label=_('ProviderNetwork (ID)'),
|
|
|
)
|
|
|
provider_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
@@ -292,7 +334,7 @@ class CircuitTerminationFilterSet(NetBoxModelFilterSet, CabledObjectFilterSet):
|
|
|
class Meta:
|
|
|
model = CircuitTermination
|
|
|
fields = (
|
|
|
- 'id', 'term_side', 'port_speed', 'upstream_speed', 'xconnect_id', 'description', 'mark_connected',
|
|
|
+ 'id', 'termination_id', 'term_side', 'port_speed', 'upstream_speed', 'xconnect_id', 'description', 'mark_connected',
|
|
|
'pp_info', 'cable_end',
|
|
|
)
|
|
|
|