From 3fe3151af7db860d8c65c6eff1bb7a27323e0f6c Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 18 Mar 2017 21:10:36 +0100 Subject: [PATCH 1/4] Filter on mac address on interface Extension to be able filter on mac address via API --- netbox/dcim/filters.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index eca792a12..d8a6e1307 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -405,6 +405,10 @@ class InterfaceFilter(django_filters.FilterSet): method='filter_type', label='Interface type', ) + mac_address = django_filters.CharFilter( + method='_mac_address', + label='MAC address', + ) class Meta: model = Interface @@ -420,6 +424,14 @@ class InterfaceFilter(django_filters.FilterSet): return queryset.filter(form_factor=IFACE_FF_LAG) 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): site = django_filters.CharFilter( From f2dc287f1429b2338b44169e2c358cc55b95c93a Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 18 Mar 2017 21:21:49 +0100 Subject: [PATCH 2/4] Filter on mac address on interface --- netbox/dcim/filters.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index d8a6e1307..e6c2cd465 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -433,6 +433,7 @@ class InterfaceFilter(django_filters.FilterSet): except AddrFormatError: return queryset.none() + class ConsoleConnectionFilter(django_filters.FilterSet): site = django_filters.CharFilter( method='filter_site', From f26253ec491d699844f995a05f6a9b36e481c724 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 18 Mar 2017 21:26:33 +0100 Subject: [PATCH 3/4] Filter on mac address on interface --- netbox/dcim/filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index e6c2cd465..af8f3a089 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -433,7 +433,7 @@ class InterfaceFilter(django_filters.FilterSet): except AddrFormatError: return queryset.none() - + class ConsoleConnectionFilter(django_filters.FilterSet): site = django_filters.CharFilter( method='filter_site', From b875cea10d5f6a59a250a37a023d32867285ec8b Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 23 Mar 2017 12:57:35 +0100 Subject: [PATCH 4/4] Filter on mac address on interface via API --- netbox/dcim/filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index af8f3a089..55cdadfbb 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -429,7 +429,7 @@ class InterfaceFilter(django_filters.FilterSet): if not value: return queryset try: - return queryset.filter(mac_address=value).distinct() + return queryset.filter(mac_address=value) except AddrFormatError: return queryset.none()