mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-08 16:48:16 -06:00
add exact address match query to IPAddressFilter
This commit is contained in:
parent
6dde0f030a
commit
111df916ff
@ -229,6 +229,10 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
||||
method='search',
|
||||
label='Search',
|
||||
)
|
||||
address = django_filters.CharFilter(
|
||||
method='search_by_address',
|
||||
label='Exact address match',
|
||||
)
|
||||
parent = django_filters.CharFilter(
|
||||
method='search_by_parent',
|
||||
label='Parent prefix',
|
||||
@ -303,6 +307,16 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
||||
)
|
||||
return queryset.filter(qs_filter)
|
||||
|
||||
def search_by_address(self, queryset, name, value):
|
||||
value = value.strip()
|
||||
if not value:
|
||||
return queryset
|
||||
try:
|
||||
query = str(netaddr.IPNetwork(value.strip()).ip)
|
||||
return queryset.filter(address=query)
|
||||
except (AddrFormatError, ValueError):
|
||||
return queryset.none()
|
||||
|
||||
def search_by_parent(self, queryset, name, value):
|
||||
value = value.strip()
|
||||
if not value:
|
||||
|
Loading…
Reference in New Issue
Block a user