Merge branch '11478-fix-cabling-interface-display' of https://github.com/netbox-community/netbox into 11478-fix-cabling-interface-display

This commit is contained in:
Daniel Sheppard 2023-08-11 12:23:10 -05:00
commit e35d658d74
2 changed files with 10 additions and 13 deletions

View File

@ -1470,7 +1470,7 @@ class InterfaceFilterSet(
label=_('Device'), label=_('Device'),
) )
device_id = MultiValueNumberFilter( device_id = MultiValueNumberFilter(
method='filter_device_id', method='filter_device',
field_name='pk', field_name='pk',
label=_('Device (ID)'), label=_('Device (ID)'),
) )
@ -1541,22 +1541,16 @@ class InterfaceFilterSet(
] ]
def filter_device(self, queryset, name, value): def filter_device(self, queryset, name, value):
try:
devices = Device.objects.filter(**{'{}__in'.format(name): value})
vc_interface_ids = []
for device in devices:
vc_interface_ids.extend(device.vc_interfaces().values_list('id', flat=True))
return queryset.filter(pk__in=vc_interface_ids)
except Device.DoesNotExist:
return queryset.none()
def filter_device_id(self, queryset, name, id_list):
# Include interfaces belonging to peer virtual chassis members # Include interfaces belonging to peer virtual chassis members
vc_interface_ids = [] vc_interface_ids = []
try: try:
devices = Device.objects.filter(pk__in=id_list) devices = Device.objects.filter(**{'{}__in'.format(name): value})
for device in devices: for device in devices:
vc_interface_ids += device.vc_interfaces(if_master=False).values_list('id', flat=True) # Hack to show all VC member interfaces when requested
if self.request is not None and 'vc_interfaces' in self.request.GET.keys():
vc_interface_ids += device.vc_interfaces(if_master=False).values_list('id', flat=True)
else:
vc_interface_ids.extend(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()

View File

@ -1108,6 +1108,7 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm):
label=_('Parent interface'), label=_('Parent interface'),
query_params={ query_params={
'device_id': '$device', 'device_id': '$device',
'vc_interfaces': 'all',
} }
) )
bridge = DynamicModelChoiceField( bridge = DynamicModelChoiceField(
@ -1116,6 +1117,7 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm):
label=_('Bridged interface'), label=_('Bridged interface'),
query_params={ query_params={
'device_id': '$device', 'device_id': '$device',
'vc_interfaces': 'all',
} }
) )
lag = DynamicModelChoiceField( lag = DynamicModelChoiceField(
@ -1124,6 +1126,7 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm):
label=_('LAG interface'), label=_('LAG interface'),
query_params={ query_params={
'device_id': '$device', 'device_id': '$device',
'vc_interfaces': 'all',
'type': 'lag', 'type': 'lag',
} }
) )