From e8df9be7020a9b781cc65e86e947fa9f6b9af4dc Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 5 Aug 2020 16:16:51 -0400 Subject: [PATCH] Add LTE and GTE filters for prefix mask length --- netbox/ipam/filters.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/netbox/ipam/filters.py b/netbox/ipam/filters.py index 0856c9f1c..79fc05334 100644 --- a/netbox/ipam/filters.py +++ b/netbox/ipam/filters.py @@ -144,8 +144,16 @@ class PrefixFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, Cre label='Prefixes which contain this prefix or IP', ) mask_length = django_filters.NumberFilter( - method='filter_mask_length', - label='Mask length', + field_name='prefix', + lookup_expr='net_mask_length' + ) + mask_length__gte = django_filters.NumberFilter( + field_name='prefix', + lookup_expr='net_mask_length__gte' + ) + mask_length__lte = django_filters.NumberFilter( + field_name='prefix', + lookup_expr='net_mask_length__lte' ) vrf_id = django_filters.ModelMultipleChoiceFilter( queryset=VRF.objects.all(), @@ -262,11 +270,6 @@ class PrefixFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, Cre except (AddrFormatError, ValueError): return queryset.none() - def filter_mask_length(self, queryset, name, value): - if not value: - return queryset - return queryset.filter(prefix__net_mask_length=value) - class IPAddressFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet): q = django_filters.CharFilter(