mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-24 08:25:17 -06:00
adds parent filter on iprange #13313
This commit is contained in:
parent
ca5e69897d
commit
e98dd4832c
@ -467,6 +467,10 @@ class IPRangeFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|||||||
choices=IPRangeStatusChoices,
|
choices=IPRangeStatusChoices,
|
||||||
null_value=None
|
null_value=None
|
||||||
)
|
)
|
||||||
|
parent = MultiValueCharFilter(
|
||||||
|
method='search_by_parent',
|
||||||
|
label=_('Parent prefix'),
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = IPRange
|
model = IPRange
|
||||||
@ -500,6 +504,18 @@ class IPRangeFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|||||||
return queryset.filter(**{f'{name}__net_in': value})
|
return queryset.filter(**{f'{name}__net_in': value})
|
||||||
except ValidationError:
|
except ValidationError:
|
||||||
return queryset.none()
|
return queryset.none()
|
||||||
|
|
||||||
|
def search_by_parent(self, queryset, name, value):
|
||||||
|
if not value:
|
||||||
|
return queryset
|
||||||
|
q = Q()
|
||||||
|
for prefix in value:
|
||||||
|
try:
|
||||||
|
query = str(netaddr.IPNetwork(prefix.strip()).cidr)
|
||||||
|
q |= Q(start_address__net_host_contained=query)
|
||||||
|
except (AddrFormatError, ValueError):
|
||||||
|
return queryset.none()
|
||||||
|
return queryset.filter(q)
|
||||||
|
|
||||||
|
|
||||||
class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
|
class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
|
||||||
|
Loading…
Reference in New Issue
Block a user