adds mask length filters on ipaddress #14101

This commit is contained in:
Abhimanyu Saharan 2023-11-08 23:05:13 +05:30
parent 22e474ff96
commit 35f80d0c68

View File

@ -532,9 +532,18 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
label=_('Address'),
)
mask_length = django_filters.NumberFilter(
method='filter_mask_length',
field_name='address',
lookup_expr='net_mask_length',
label=_('Mask length'),
)
mask_length__gte = django_filters.NumberFilter(
field_name='address',
lookup_expr='net_mask_length__gte'
)
mask_length__lte = django_filters.NumberFilter(
field_name='address',
lookup_expr='net_mask_length__lte'
)
vrf_id = django_filters.ModelMultipleChoiceFilter(
queryset=VRF.objects.all(),
label=_('VRF'),
@ -677,11 +686,6 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
except ValidationError:
return queryset.none()
def filter_mask_length(self, queryset, name, value):
if not value:
return queryset
return queryset.filter(address__net_mask_length=value)
@extend_schema_field(OpenApiTypes.STR)
def filter_present_in_vrf(self, queryset, name, vrf):
if vrf is None: