From d41f4d2db3a96cfe036262a0a7ac05be46489019 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 18 Dec 2017 16:22:49 -0500 Subject: [PATCH] Return all VC member interfaces when filtering for the master device; remove virtual_chassis_id filter --- netbox/dcim/filters.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index e63de6f9a..e038da5ca 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -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):