mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #103: Corrected VRF filters for Prefixes and IPAddresses
This commit is contained in:
@ -46,9 +46,14 @@ class PrefixFilter(django_filters.FilterSet):
|
|||||||
action='search_by_parent',
|
action='search_by_parent',
|
||||||
label='Parent prefix',
|
label='Parent prefix',
|
||||||
)
|
)
|
||||||
|
vrf = django_filters.MethodFilter(
|
||||||
|
action='_vrf',
|
||||||
|
label='VRF',
|
||||||
|
)
|
||||||
|
# Duplicate of `vrf` for backward-compatibility
|
||||||
vrf_id = django_filters.MethodFilter(
|
vrf_id = django_filters.MethodFilter(
|
||||||
action='vrf',
|
action='_vrf',
|
||||||
label='VRF (ID)',
|
label='VRF',
|
||||||
)
|
)
|
||||||
site_id = django_filters.ModelMultipleChoiceFilter(
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
name='site',
|
name='site',
|
||||||
@ -84,7 +89,7 @@ class PrefixFilter(django_filters.FilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Prefix
|
model = Prefix
|
||||||
fields = ['family', 'site_id', 'site', 'vrf_id', 'vrf', 'vlan_id', 'vlan_vid', 'status', 'role_id', 'role']
|
fields = ['family', 'site_id', 'site', 'vrf', 'vrf_id', 'vlan_id', 'vlan_vid', 'status', 'role_id', 'role']
|
||||||
|
|
||||||
def search(self, queryset, value):
|
def search(self, queryset, value):
|
||||||
value = value.strip()
|
value = value.strip()
|
||||||
@ -104,7 +109,7 @@ class PrefixFilter(django_filters.FilterSet):
|
|||||||
except AddrFormatError:
|
except AddrFormatError:
|
||||||
return queryset.none()
|
return queryset.none()
|
||||||
|
|
||||||
def vrf(self, queryset, value):
|
def _vrf(self, queryset, value):
|
||||||
if str(value) == '':
|
if str(value) == '':
|
||||||
return queryset
|
return queryset
|
||||||
try:
|
try:
|
||||||
@ -121,10 +126,14 @@ class IPAddressFilter(django_filters.FilterSet):
|
|||||||
action='search',
|
action='search',
|
||||||
label='Search',
|
label='Search',
|
||||||
)
|
)
|
||||||
vrf_id = django_filters.ModelMultipleChoiceFilter(
|
vrf = django_filters.MethodFilter(
|
||||||
name='vrf',
|
action='_vrf',
|
||||||
queryset=VRF.objects.all(),
|
label='VRF',
|
||||||
label='VRF (ID)',
|
)
|
||||||
|
# Duplicate of `vrf` for backward-compatibility
|
||||||
|
vrf_id = django_filters.MethodFilter(
|
||||||
|
action='_vrf',
|
||||||
|
label='VRF',
|
||||||
)
|
)
|
||||||
device_id = django_filters.ModelMultipleChoiceFilter(
|
device_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
name='interface__device',
|
name='interface__device',
|
||||||
@ -155,6 +164,17 @@ class IPAddressFilter(django_filters.FilterSet):
|
|||||||
except AddrFormatError:
|
except AddrFormatError:
|
||||||
return queryset.none()
|
return queryset.none()
|
||||||
|
|
||||||
|
def _vrf(self, queryset, value):
|
||||||
|
if str(value) == '':
|
||||||
|
return queryset
|
||||||
|
try:
|
||||||
|
vrf_id = int(value)
|
||||||
|
except ValueError:
|
||||||
|
return queryset.none()
|
||||||
|
if vrf_id == 0:
|
||||||
|
return queryset.filter(vrf__isnull=True)
|
||||||
|
return queryset.filter(vrf__pk=value)
|
||||||
|
|
||||||
|
|
||||||
class VLANFilter(django_filters.FilterSet):
|
class VLANFilter(django_filters.FilterSet):
|
||||||
site_id = django_filters.ModelMultipleChoiceFilter(
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
Reference in New Issue
Block a user