فهرست منبع

Fixes 2427: Added filtering interfaces by vlan id(vlan=#) and vlan pk(vlan_id=#) (#2521)

Daniel Sheppard 7 سال پیش
والد
کامیت
82b4aad585
1فایلهای تغییر یافته به همراه14 افزوده شده و 0 حذف شده
  1. 14 0
      netbox/dcim/filters.py

+ 14 - 0
netbox/dcim/filters.py

@@ -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 {