From 1791a5bb1118db45d6e42b0fd1065f3abe8811df Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 21 Mar 2017 21:29:03 -0400 Subject: [PATCH] Added has_primary_ip filter for Devices --- netbox/dcim/filters.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index cdf5abc33..6c2431359 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -348,6 +348,10 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet): name='device_type__is_network_device', label='Is a network device', ) + has_primary_ip = django_filters.BooleanFilter( + method='_has_primary_ip', + label='Has a primary IP', + ) class Meta: model = Device @@ -373,6 +377,18 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet): except AddrFormatError: return queryset.none() + def _has_primary_ip(self, queryset, name, value): + if value: + return queryset.filter( + Q(primary_ip4__isnull=False) | + Q(primary_ip6__isnull=False) + ) + else: + return queryset.exclude( + Q(primary_ip4__isnull=False) | + Q(primary_ip6__isnull=False) + ) + class DeviceComponentFilterSet(django_filters.FilterSet): device_id = django_filters.ModelMultipleChoiceFilter(