diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index c58e9d17e..aad02592e 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -131,12 +131,12 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): to_field_name='slug', label='Group (slug)', ) - asn_id = django_filters.ModelMultipleChoiceFilter( + asns_id = django_filters.ModelMultipleChoiceFilter( field_name='asns', queryset=ASN.objects.all(), label='AS (ID)', ) - asn = django_filters.ModelMultipleChoiceFilter( + asns = django_filters.ModelMultipleChoiceFilter( field_name='asns__asn', queryset=ASN.objects.all(), to_field_name='asn', @@ -147,7 +147,7 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): class Meta: model = Site fields = [ - 'id', 'name', 'slug', 'facility', 'latitude', 'longitude', 'contact_name', 'contact_phone', + 'id', 'name', 'slug', 'facility', 'asn', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', ] @@ -167,7 +167,7 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): ) try: qs_filter |= Q(asn=int(value.strip())) - qs_filter |= Q(asns=int(value.strip())) + qs_filter |= Q(asns__asn=int(value.strip())) except ValueError: pass return queryset.filter(qs_filter) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 1b27a43e3..d05d2b2f2 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -182,6 +182,10 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'asn': [65001, 65002]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_asns(self): + params = {'asns': [65001, 65002]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_latitude(self): params = {'latitude': [10, 20]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/utilities/tests/test_filters.py b/netbox/utilities/tests/test_filters.py index e4609ef9b..2616dbf36 100644 --- a/netbox/utilities/tests/test_filters.py +++ b/netbox/utilities/tests/test_filters.py @@ -347,20 +347,6 @@ class DynamicFilterLookupExpressionTest(TestCase): @classmethod def setUpTestData(cls): - provider = Provider.objects.create(name='Test Provider', slug='test-provider') - circuit_type = CircuitType.objects.create(name='Test Circuit Type', slug='test-circuit-type') - - circuits = ( - Circuit(cid='CID12123', provider=provider, type=circuit_type, - status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=1000), - Circuit(cid='CID12124', provider=provider, type=circuit_type, - status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=10000), - Circuit(cid='CID12125', provider=provider, type=circuit_type, - status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=100000) - - ) - Circuit.objects.bulk_create(circuits) - manufacturers = ( Manufacturer(name='Manufacturer 1', slug='manufacturer-1'), Manufacturer(name='Manufacturer 2', slug='manufacturer-2'), @@ -398,9 +384,9 @@ class DynamicFilterLookupExpressionTest(TestCase): region.save() sites = ( - Site(name='Site 1', slug='abc-site-1', region=regions[0]), - Site(name='Site 2', slug='def-site-2', region=regions[1]), - Site(name='Site 3', slug='ghi-site-3', region=regions[2]), + Site(name='Site 1', slug='abc-site-1', region=regions[0], asn=65001), + Site(name='Site 2', slug='def-site-2', region=regions[1], asn=65101), + Site(name='Site 3', slug='ghi-site-3', region=regions[2], asn=65201), ) Site.objects.bulk_create(sites) @@ -469,21 +455,21 @@ class DynamicFilterLookupExpressionTest(TestCase): params = {'slug__niew': ['-1']} self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) - def test_circuit_commit_lt(self): - params = {'commit_rate__lt': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 1) + def test_site_asn_lt(self): + params = {'asn__lt': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 1) - def test_circuit_commit_lte(self): - params = {'commit_rate__lte': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 2) + def test_site_asn_lte(self): + params = {'asn__lte': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) - def test_circuit_commit_gt(self): - params = {'commit_rate__gt': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 1) + def test_site_asn_gt(self): + params = {'asn__lt': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 1) - def test_circuit_commit_gte(self): - params = {'commit_rate__gte': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 2) + def test_site_asn_gte(self): + params = {'asn__gte': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) def test_site_region_negation(self): params = {'region__n': ['region-1']}