Daniel Sheppard 4 лет назад
Родитель
Сommit
8c27ff3859

+ 4 - 4
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)

+ 4 - 0
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)

+ 15 - 29
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']}