mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-07 08:08:15 -06:00
Add back device search to allow export filter more specifically incase of overlap
This commit is contained in:
parent
1e51f884e5
commit
8277b423d6
@ -582,6 +582,11 @@ class InterfaceListFilter(django_filters.FilterSet):
|
|||||||
method='search',
|
method='search',
|
||||||
label='Search',
|
label='Search',
|
||||||
)
|
)
|
||||||
|
device = django_filters.CharFilter(
|
||||||
|
method='filter_device',
|
||||||
|
name='name',
|
||||||
|
label='Device',
|
||||||
|
)
|
||||||
site = django_filters.CharFilter(
|
site = django_filters.CharFilter(
|
||||||
method='filter_site',
|
method='filter_site',
|
||||||
label='Site (slug)',
|
label='Site (slug)',
|
||||||
@ -613,6 +618,14 @@ class InterfaceListFilter(django_filters.FilterSet):
|
|||||||
model = Interface
|
model = Interface
|
||||||
fields = ['form_factor', 'enabled', 'mtu']
|
fields = ['form_factor', 'enabled', 'mtu']
|
||||||
|
|
||||||
|
def filter_device(self, queryset, name, value):
|
||||||
|
try:
|
||||||
|
device = Device.objects.select_related('device_type').get(**{name: value})
|
||||||
|
ordering = device.device_type.interface_ordering
|
||||||
|
return queryset.filter(device=device).order_naturally(ordering)
|
||||||
|
except Device.DoesNotExist:
|
||||||
|
return queryset.none()
|
||||||
|
|
||||||
def filter_site(self, queryset, name, value):
|
def filter_site(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
return queryset
|
return queryset
|
||||||
|
@ -1623,7 +1623,7 @@ class InterfaceListFilterForm(BootstrapMixin, forms.Form):
|
|||||||
rack_group_id = FilterChoiceField(
|
rack_group_id = FilterChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
queryset=RackGroup.objects.select_related('site').annotate(filter_count=Count('racks__devices')),
|
queryset=RackGroup.objects.select_related('site').annotate(filter_count=Count('racks__devices')),
|
||||||
label='Rack group',
|
label='Rack Group',
|
||||||
null_option=(0, 'None')
|
null_option=(0, 'None')
|
||||||
)
|
)
|
||||||
rack_id = FilterChoiceField(
|
rack_id = FilterChoiceField(
|
||||||
@ -1636,8 +1636,10 @@ class InterfaceListFilterForm(BootstrapMixin, forms.Form):
|
|||||||
role = FilterChoiceField(
|
role = FilterChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
queryset=DeviceRole.objects.annotate(filter_count=Count('devices')),
|
queryset=DeviceRole.objects.annotate(filter_count=Count('devices')),
|
||||||
to_field_name='slug'
|
to_field_name='slug',
|
||||||
|
label='Device Role'
|
||||||
)
|
)
|
||||||
|
device = forms.CharField(required=False, label='Device Name')
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user