From 6d6e55641920457ee9b91854d02cba15c06c994c Mon Sep 17 00:00:00 2001 From: Marco Ceppi Date: Fri, 2 Oct 2020 17:07:11 -0400 Subject: [PATCH] feature - Allow for filtering by market and virtual circuit --- netbox/vapor/filters.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/netbox/vapor/filters.py b/netbox/vapor/filters.py index f0c81d2d5..1cab6c838 100644 --- a/netbox/vapor/filters.py +++ b/netbox/vapor/filters.py @@ -4,12 +4,14 @@ from django.db.models import Q from extras.filters import CustomFieldFilterSet from utilities.filters import NameSlugSearchFilterSet, TagFilter, MultiValueNumberFilter from tenancy.models import Tenant, TenantGroup -from dcim.models import Site, Device, DeviceRole, Interface +from dcim.models import Site, Device, DeviceRole, Interface, Region from dcim.choices import ( InterfaceTypeChoices, ) from dcim.filters import MultiValueMACAddressFilter +from netbox_virtual_circuit_plugin.models import VirtualCircuit + class CustomerFilter(CustomFieldFilterSet): q = django_filters.CharFilter( @@ -117,6 +119,34 @@ class InterfaceFilter(django_filters.FilterSet): label='Customer (slug)', ) + market = django_filters.ModelMultipleChoiceFilter( + field_name='device__site__region__slug', + queryset=Region.objects.all(), + to_field_name='slug', + label='Region (slug)', + ) + + vc_context = django_filters.ModelMultipleChoiceFilter( + field_name='tagged_vlans__vlan_of__virtual_circuit__context', + queryset=VirtualCircuit.objects.all(), + to_field_name='context', + label='Virtual Circuit (context)', + ) + + vc_name = django_filters.ModelMultipleChoiceFilter( + field_name='tagged_vlans__vlan_of__virtual_circuit__name', + queryset=VirtualCircuit.objects.all(), + to_field_name='name', + label='Virtual Circuit (name)', + ) + + vc_id = django_filters.ModelMultipleChoiceFilter( + field_name='tagged_vlans__vlan_of__virtual_circuit__vcid', + queryset=VirtualCircuit.objects.all(), + to_field_name='vcid', + label='Virtual Circuit (vcid)', + ) + class Meta: model = Interface fields = ['id', 'name', 'connection_status', 'type', 'enabled', 'mtu', 'mgmt_only', 'mode', 'description']