feature - Allow for filtering by market and virtual circuit

This commit is contained in:
Marco Ceppi 2020-10-02 17:07:11 -04:00
parent e3eff85a5c
commit 6d6e556419

View File

@ -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']