#6732 - Add ASN back to filtersets

This commit is contained in:
Daniel Sheppard 2021-11-02 11:07:19 -05:00
parent 87e07e731d
commit 8c27ff3859
3 changed files with 23 additions and 33 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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']}