Return all VC member interfaces when filtering for the master device; remove virtual_chassis_id filter

This commit is contained in:
Jeremy Stretch 2017-12-18 16:22:49 -05:00
parent 4871682dc6
commit d41f4d2db3

View File

@ -569,11 +569,6 @@ class InterfaceFilter(django_filters.FilterSet):
method='_mac_address',
label='MAC address',
)
virtual_chassis_id = django_filters.NumberFilter(
method='_virtual_chassis_id',
name='pk',
label='Virtual chassis (ID)',
)
class Meta:
model = Interface
@ -582,8 +577,9 @@ class InterfaceFilter(django_filters.FilterSet):
def filter_device(self, queryset, name, value):
try:
device = Device.objects.select_related('device_type').get(**{name: value})
vc_interface_ids = [i['id'] for i in device.vc_interfaces.values('id')]
ordering = device.device_type.interface_ordering
return queryset.filter(device=device).order_naturally(ordering)
return queryset.filter(pk__in=vc_interface_ids).order_naturally(ordering)
except Device.DoesNotExist:
return queryset.none()
@ -606,14 +602,6 @@ class InterfaceFilter(django_filters.FilterSet):
except AddrFormatError:
return queryset.none()
def _virtual_chassis_id(self, queryset, name, value):
try:
virtual_chassis = VirtualChassis.objects.get(**{name: value})
ordering = virtual_chassis.master.device_type.interface_ordering
return queryset.filter(device__vc_membership__virtual_chassis=virtual_chassis).order_naturally(ordering)
except VirtualChassis.DoesNotExist:
return queryset.none()
class DeviceBayFilter(DeviceComponentFilterSet):