Fix filtering services by port number

This commit is contained in:
Jeremy Stretch
2020-09-21 14:36:58 -04:00
parent b85990daa6
commit 3a90366538
4 changed files with 21 additions and 8 deletions

View File

@@ -8,7 +8,7 @@ from dcim.models import Device, Interface, Region, Site
from extras.filters import CustomFieldFilterSet, CreatedUpdatedFilterSet
from tenancy.filters import TenancyFilterSet
from utilities.filters import (
BaseFilterSet, MultiValueCharFilter, MultiValueNumberFilter, NameSlugSearchFilterSet, TagFilter,
BaseFilterSet, MultiValueCharFilter, MultiValueNumberFilter, NameSlugSearchFilterSet, NumericArrayFilter, TagFilter,
TreeNodeMultipleChoiceFilter,
)
from virtualization.models import VirtualMachine, VMInterface
@@ -542,6 +542,10 @@ class ServiceFilterSet(BaseFilterSet, CreatedUpdatedFilterSet):
to_field_name='name',
label='Virtual machine (name)',
)
port = NumericArrayFilter(
field_name='ports',
lookup_expr='contains'
)
tag = TagFilter()
class Meta:

View File

@@ -623,8 +623,9 @@ class ServiceTable(BaseTable):
parent = tables.LinkColumn(
order_by=('device', 'virtual_machine')
)
ports = tables.Column(
orderable=False
ports = tables.TemplateColumn(
template_code='{{ record.port_list }}',
verbose_name='Ports'
)
tags = TagColumn(
url_name='ipam:service_list'

View File

@@ -763,9 +763,9 @@ class ServiceTestCase(TestCase):
params = {'protocol': ServiceProtocolChoices.PROTOCOL_TCP}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
# def test_port(self):
# params = {'port': ['1001', '1002', '1003']}
# self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
def test_port(self):
params = {'port': '1001'}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
def test_device(self):
devices = Device.objects.all()[:2]