Change IPaddress mask_length filter to multi-value; extend tests

This commit is contained in:
Jeremy Stretch 2023-11-09 08:21:46 -05:00
parent 35f80d0c68
commit 9652fb1d67
2 changed files with 14 additions and 5 deletions

View File

@ -266,7 +266,8 @@ class PrefixFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
) )
mask_length = MultiValueNumberFilter( mask_length = MultiValueNumberFilter(
field_name='prefix', field_name='prefix',
lookup_expr='net_mask_length' lookup_expr='net_mask_length',
label=_('Mask length')
) )
mask_length__gte = django_filters.NumberFilter( mask_length__gte = django_filters.NumberFilter(
field_name='prefix', field_name='prefix',
@ -531,10 +532,10 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
method='filter_address', method='filter_address',
label=_('Address'), label=_('Address'),
) )
mask_length = django_filters.NumberFilter( mask_length = MultiValueNumberFilter(
field_name='address', field_name='address',
lookup_expr='net_mask_length', lookup_expr='net_mask_length',
label=_('Mask length'), label=_('Mask length')
) )
mask_length__gte = django_filters.NumberFilter( mask_length__gte = django_filters.NumberFilter(
field_name='address', field_name='address',

View File

@ -627,8 +627,12 @@ class PrefixTestCase(TestCase, ChangeLoggedFilterSetTests):
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_mask_length(self): def test_mask_length(self):
params = {'mask_length': ['24']} params = {'mask_length': [24]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
params = {'mask_length__gte': 32}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5)
params = {'mask_length__lte': 24}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5)
def test_vrf(self): def test_vrf(self):
vrfs = VRF.objects.all()[:2] vrfs = VRF.objects.all()[:2]
@ -954,8 +958,12 @@ class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests):
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_mask_length(self): def test_mask_length(self):
params = {'mask_length': '24'} params = {'mask_length': [24]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5)
params = {'mask_length__gte': 64}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
params = {'mask_length__lte': 25}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
def test_vrf(self): def test_vrf(self):
vrfs = VRF.objects.all()[:2] vrfs = VRF.objects.all()[:2]