Skip to content

Commit 57860f2

Browse files
Adds assigned bool for IP address API (#13301)
* adds assigned bool for ip address API #13151 * Add filterset test --------- Co-authored-by: Jeremy Stretch <[email protected]>
1 parent ab916a1 commit 57860f2

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

netbox/ipam/filtersets.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,10 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
591591
method='_assigned_to_interface',
592592
label=_('Is assigned to an interface'),
593593
)
594+
assigned = django_filters.BooleanFilter(
595+
method='_assigned',
596+
label=_('Is assigned'),
597+
)
594598
status = django_filters.MultipleChoiceFilter(
595599
choices=IPAddressStatusChoices,
596600
null_value=None
@@ -706,6 +710,18 @@ def _assigned_to_interface(self, queryset, name, value):
706710
assigned_object_id__isnull=False
707711
)
708712

713+
def _assigned(self, queryset, name, value):
714+
if value:
715+
return queryset.exclude(
716+
assigned_object_type__isnull=True,
717+
assigned_object_id__isnull=True
718+
)
719+
else:
720+
return queryset.filter(
721+
assigned_object_type__isnull=True,
722+
assigned_object_id__isnull=True
723+
)
724+
709725

710726
class FHRPGroupFilterSet(NetBoxModelFilterSet):
711727
protocol = django_filters.MultipleChoiceFilter(

netbox/ipam/tests/test_filtersets.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,12 @@ def test_fhrpgroup(self):
992992
params = {'fhrpgroup_id': [fhrp_groups[0].pk, fhrp_groups[1].pk]}
993993
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
994994

995+
def test_assigned(self):
996+
params = {'assigned': 'true'}
997+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8)
998+
params = {'assigned': 'false'}
999+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
1000+
9951001
def test_assigned_to_interface(self):
9961002
params = {'assigned_to_interface': 'true'}
9971003
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)

0 commit comments

Comments
 (0)