Przeglądaj źródła

fix(circuits): Correct queryset for provider_account filter

Changes provider_account filter queryset from Provider.objects.all() to
ProviderAccount.objects.all() in CircuitFilterSet and
VirtualCircuitFilterSet. Adds test coverage for filtering by
provider account string values.

Fixes #23325
Martin Hauser 2 dni temu
rodzic
commit
0ec1c15e2a

+ 2 - 2
netbox/circuits/filtersets.py

@@ -189,7 +189,7 @@ class CircuitFilterSet(PrimaryModelFilterSet, TenancyFilterSet, ContactModelFilt
     )
     provider_account = django_filters.ModelMultipleChoiceFilter(
         field_name='provider_account__account',
-        queryset=Provider.objects.all(),
+        queryset=ProviderAccount.objects.all(),
         distinct=False,
         to_field_name='account',
         label=_('Provider account (account)'),
@@ -537,7 +537,7 @@ class VirtualCircuitFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
     )
     provider_account = django_filters.ModelMultipleChoiceFilter(
         field_name='provider_account__account',
-        queryset=Provider.objects.all(),
+        queryset=ProviderAccount.objects.all(),
         distinct=False,
         to_field_name='account',
         label=_('Provider account (account)'),

+ 4 - 0
netbox/circuits/tests/test_filtersets.py

@@ -370,6 +370,8 @@ class CircuitTestCase(TestCase, ChangeLoggedFilterSetTestMixin):
         provider_accounts = ProviderAccount.objects.all()[:2]
         params = {'provider_account_id': [provider_accounts[0].pk, provider_accounts[1].pk]}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
+        params = {'provider_account': [provider_accounts[0].account, provider_accounts[1].account]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
     def test_provider_network(self):
         provider_networks = ProviderNetwork.objects.all()[:2]
@@ -1055,6 +1057,8 @@ class VirtualCircuitTestCase(TestCase, ChangeLoggedFilterSetTestMixin):
         provider_accounts = ProviderAccount.objects.all()[:2]
         params = {'provider_account_id': [provider_accounts[0].pk, provider_accounts[1].pk]}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+        params = {'provider_account': [provider_accounts[0].account, provider_accounts[1].account]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
     def test_provider_network(self):
         provider_networks = ProviderNetwork.objects.all()[:2]