Преглед изворни кода

Filter on mac address on interface

Extension to be able filter on mac address via API
Mark пре 9 година
родитељ
комит
3fe3151af7
1 измењених фајлова са 12 додато и 0 уклоњено
  1. 12 0
      netbox/dcim/filters.py

+ 12 - 0
netbox/dcim/filters.py

@@ -405,6 +405,10 @@ class InterfaceFilter(django_filters.FilterSet):
         method='filter_type',
         method='filter_type',
         label='Interface type',
         label='Interface type',
     )
     )
+    mac_address = django_filters.CharFilter(
+        method='_mac_address',
+        label='MAC address',
+    )
 
 
     class Meta:
     class Meta:
         model = Interface
         model = Interface
@@ -420,6 +424,14 @@ class InterfaceFilter(django_filters.FilterSet):
             return queryset.filter(form_factor=IFACE_FF_LAG)
             return queryset.filter(form_factor=IFACE_FF_LAG)
         return queryset
         return queryset
 
 
+    def _mac_address(self, queryset, name, value):
+        value = value.strip()
+        if not value:
+            return queryset
+        try:
+            return queryset.filter(mac_address=value).distinct()
+        except AddrFormatError:
+            return queryset.none()
 
 
 class ConsoleConnectionFilter(django_filters.FilterSet):
 class ConsoleConnectionFilter(django_filters.FilterSet):
     site = django_filters.CharFilter(
     site = django_filters.CharFilter(