|
@@ -92,6 +92,10 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
method='search_by_parent',
|
|
|
label='Parent prefix',
|
|
|
)
|
|
|
+ mask_length = django_filters.NumberFilter(
|
|
|
+ method='filter_mask_length',
|
|
|
+ label='Mask length',
|
|
|
+ )
|
|
|
vrf_id = NullableModelMultipleChoiceFilter(
|
|
|
name='vrf_id',
|
|
|
queryset=VRF.objects.all(),
|
|
@@ -171,6 +175,11 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
except AddrFormatError:
|
|
|
return queryset.none()
|
|
|
|
|
|
+ def filter_mask_length(self, queryset, name, value):
|
|
|
+ if not value:
|
|
|
+ return queryset
|
|
|
+ return queryset.filter(prefix__net_mask_length=value)
|
|
|
+
|
|
|
|
|
|
class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
q = django_filters.CharFilter(
|
|
@@ -181,6 +190,10 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
method='search_by_parent',
|
|
|
label='Parent prefix',
|
|
|
)
|
|
|
+ mask_length = django_filters.NumberFilter(
|
|
|
+ method='filter_mask_length',
|
|
|
+ label='Mask length',
|
|
|
+ )
|
|
|
vrf_id = NullableModelMultipleChoiceFilter(
|
|
|
name='vrf_id',
|
|
|
queryset=VRF.objects.all(),
|
|
@@ -245,6 +258,11 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
except AddrFormatError:
|
|
|
return queryset.none()
|
|
|
|
|
|
+ def filter_mask_length(self, queryset, name, value):
|
|
|
+ if not value:
|
|
|
+ return queryset
|
|
|
+ return queryset.filter(address__net_mask_length=value)
|
|
|
+
|
|
|
|
|
|
class VLANGroupFilter(django_filters.FilterSet):
|
|
|
site_id = NullableModelMultipleChoiceFilter(
|