mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-16 12:12:53 -06:00
Extend IP address device filter to match virtual chassis members
This commit is contained in:
parent
d80e64b2cc
commit
c43487b741
@ -257,16 +257,15 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|||||||
to_field_name='slug',
|
to_field_name='slug',
|
||||||
label='Tenant (slug)',
|
label='Tenant (slug)',
|
||||||
)
|
)
|
||||||
device_id = django_filters.ModelMultipleChoiceFilter(
|
device = django_filters.CharFilter(
|
||||||
name='interface__device',
|
method='filter_device',
|
||||||
queryset=Device.objects.all(),
|
name='name',
|
||||||
label='Device (ID)',
|
label='Device',
|
||||||
)
|
)
|
||||||
device = django_filters.ModelMultipleChoiceFilter(
|
device_id = django_filters.NumberFilter(
|
||||||
name='interface__device__name',
|
method='filter_device',
|
||||||
queryset=Device.objects.all(),
|
name='pk',
|
||||||
to_field_name='name',
|
label='Device (ID)',
|
||||||
label='Device (name)',
|
|
||||||
)
|
)
|
||||||
virtual_machine_id = django_filters.ModelMultipleChoiceFilter(
|
virtual_machine_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
name='interface__virtual_machine',
|
name='interface__virtual_machine',
|
||||||
@ -319,6 +318,14 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|||||||
return queryset
|
return queryset
|
||||||
return queryset.filter(address__net_mask_length=value)
|
return queryset.filter(address__net_mask_length=value)
|
||||||
|
|
||||||
|
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')]
|
||||||
|
return queryset.filter(interface_id__in=vc_interface_ids)
|
||||||
|
except Device.DoesNotExist:
|
||||||
|
return queryset.none()
|
||||||
|
|
||||||
|
|
||||||
class VLANGroupFilter(django_filters.FilterSet):
|
class VLANGroupFilter(django_filters.FilterSet):
|
||||||
site_id = django_filters.ModelMultipleChoiceFilter(
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
Loading…
Reference in New Issue
Block a user