Răsfoiți Sursa

Fixes #9116: assigned_to_interface filter for IP addresses should not match FHRP group assignments

jeremystretch 3 ani în urmă
părinte
comite
1266a2f753

+ 1 - 0
docs/release-notes/version-3.2.md

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

+ 11 - 1
netbox/ipam/filtersets.py

@@ -618,7 +618,17 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
         )
 
     def _assigned_to_interface(self, queryset, name, value):
-        return queryset.exclude(assigned_object_id__isnull=value)
+        content_types = ContentType.objects.get_for_models(Interface, VMInterface).values()
+        if value:
+            return queryset.filter(
+                assigned_object_type__in=content_types,
+                assigned_object_id__isnull=False
+            )
+        else:
+            return queryset.exclude(
+                assigned_object_type__in=content_types,
+                assigned_object_id__isnull=False
+            )
 
 
 class FHRPGroupFilterSet(NetBoxModelFilterSet):

+ 1 - 1
netbox/ipam/tests/test_filtersets.py

@@ -891,7 +891,7 @@ class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests):
         params = {'assigned_to_interface': 'true'}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
         params = {'assigned_to_interface': 'false'}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
 
     def test_status(self):
         params = {'status': [PrefixStatusChoices.STATUS_DEPRECATED, PrefixStatusChoices.STATUS_RESERVED]}