|
|
@@ -635,6 +635,14 @@ class InterfaceFilter(django_filters.FilterSet):
|
|
|
tag = django_filters.CharFilter(
|
|
|
name='tags__slug',
|
|
|
)
|
|
|
+ vlan_id = django_filters.CharFilter(
|
|
|
+ method='filter_vlan_by_pk',
|
|
|
+ name='vlan_pk',
|
|
|
+ )
|
|
|
+ vlan = django_filters.CharFilter(
|
|
|
+ method='filter_vlan_by_id',
|
|
|
+ name='vid',
|
|
|
+ )
|
|
|
|
|
|
class Meta:
|
|
|
model = Interface
|
|
|
@@ -649,6 +657,12 @@ class InterfaceFilter(django_filters.FilterSet):
|
|
|
except Device.DoesNotExist:
|
|
|
return queryset.none()
|
|
|
|
|
|
+ def filter_vlan_by_pk(self, queryset, name, value):
|
|
|
+ return queryset.filter(Q(untagged_vlan_id=value) | Q(tagged_vlans=value))
|
|
|
+
|
|
|
+ def filter_vlan_by_id(self, queryset, name, value):
|
|
|
+ return queryset.filter(Q(untagged_vlan_id__vid=value) | Q(tagged_vlans__vid=value))
|
|
|
+
|
|
|
def filter_type(self, queryset, name, value):
|
|
|
value = value.strip().lower()
|
|
|
return {
|