Simplified filter_device() for Interfaces

This commit is contained in:
Jeremy Stretch 2018-12-06 11:33:24 -05:00
parent 870edbb44a
commit 71dee2758b

View File

@ -728,8 +728,7 @@ class PowerOutletFilter(DeviceComponentFilterSet):
class InterfaceFilter(django_filters.FilterSet): class InterfaceFilter(django_filters.FilterSet):
""" """
Not using DeviceComponentFilterSet for Interfaces because we need to glean the ordering logic from the parent Not using DeviceComponentFilterSet for Interfaces because we need to check for VirtualChassis membership.
Device's DeviceType.
""" """
device = django_filters.CharFilter( device = django_filters.CharFilter(
method='filter_device', method='filter_device',
@ -771,7 +770,7 @@ class InterfaceFilter(django_filters.FilterSet):
def filter_device(self, queryset, name, value): def filter_device(self, queryset, name, value):
try: try:
device = Device.objects.get(**{name: value}) device = Device.objects.get(**{name: value})
vc_interface_ids = [i['id'] for i in device.vc_interfaces.values('id')] vc_interface_ids = device.vc_interfaces.values_list('id', flat=True)
return queryset.filter(pk__in=vc_interface_ids) return queryset.filter(pk__in=vc_interface_ids)
except Device.DoesNotExist: except Device.DoesNotExist:
return queryset.none() return queryset.none()