|
@@ -536,6 +536,10 @@ class IPAddressFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
|
|
|
|
|
|
|
|
|
|
|
|
|
class VLANGroupFilterSet(OrganizationalModelFilterSet):
|
|
class VLANGroupFilterSet(OrganizationalModelFilterSet):
|
|
|
|
|
+ q = django_filters.CharFilter(
|
|
|
|
|
+ method='search',
|
|
|
|
|
+ label='Search',
|
|
|
|
|
+ )
|
|
|
scope_type = ContentTypeFilter()
|
|
scope_type = ContentTypeFilter()
|
|
|
region = django_filters.NumberFilter(
|
|
region = django_filters.NumberFilter(
|
|
|
method='filter_scope'
|
|
method='filter_scope'
|
|
@@ -563,6 +567,15 @@ class VLANGroupFilterSet(OrganizationalModelFilterSet):
|
|
|
model = VLANGroup
|
|
model = VLANGroup
|
|
|
fields = ['id', 'name', 'slug', 'description', 'scope_id']
|
|
fields = ['id', 'name', 'slug', 'description', 'scope_id']
|
|
|
|
|
|
|
|
|
|
+ def search(self, queryset, name, value):
|
|
|
|
|
+ if not value.strip():
|
|
|
|
|
+ return queryset
|
|
|
|
|
+ qs_filter = (
|
|
|
|
|
+ Q(name__icontains=value) |
|
|
|
|
|
+ Q(description__icontains=value)
|
|
|
|
|
+ )
|
|
|
|
|
+ return queryset.filter(qs_filter)
|
|
|
|
|
+
|
|
|
def filter_scope(self, queryset, name, value):
|
|
def filter_scope(self, queryset, name, value):
|
|
|
return queryset.filter(
|
|
return queryset.filter(
|
|
|
scope_type=ContentType.objects.get(model=name),
|
|
scope_type=ContentType.objects.get(model=name),
|