Skip to content

Commit 1266a2f

Browse files
committed
Fixes #9116: assigned_to_interface filter for IP addresses should not match FHRP group assignments
1 parent 23d2cf1 commit 1266a2f

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

docs/release-notes/version-3.2.md

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
* [#9079](https://github.com/netbox-community/netbox/issues/9079) - Fail validation when an inventory item is assigned as its own parent
2020
* [#9096](https://github.com/netbox-community/netbox/issues/9096) - Remove duplicate filter tag when filtering by "none"
2121
* [#9100](https://github.com/netbox-community/netbox/issues/9100) - Include position field in module type YAML export
22+
* [#9116](https://github.com/netbox-community/netbox/issues/9116) - `assigned_to_interface` filter for IP addresses should not match FHRP group assignments
2223

2324
---
2425

netbox/ipam/filtersets.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,17 @@ def filter_virtual_machine(self, queryset, name, value):
618618
)
619619

620620
def _assigned_to_interface(self, queryset, name, value):
621-
return queryset.exclude(assigned_object_id__isnull=value)
621+
content_types = ContentType.objects.get_for_models(Interface, VMInterface).values()
622+
if value:
623+
return queryset.filter(
624+
assigned_object_type__in=content_types,
625+
assigned_object_id__isnull=False
626+
)
627+
else:
628+
return queryset.exclude(
629+
assigned_object_type__in=content_types,
630+
assigned_object_id__isnull=False
631+
)
622632

623633

624634
class FHRPGroupFilterSet(NetBoxModelFilterSet):

netbox/ipam/tests/test_filtersets.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ def test_assigned_to_interface(self):
891891
params = {'assigned_to_interface': 'true'}
892892
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
893893
params = {'assigned_to_interface': 'false'}
894-
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
894+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
895895

896896
def test_status(self):
897897
params = {'status': [PrefixStatusChoices.STATUS_DEPRECATED, PrefixStatusChoices.STATUS_RESERVED]}

0 commit comments

Comments
 (0)