mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-17 07:49:01 +00:00
[Update] 添加ids filter
This commit is contained in:
@@ -9,7 +9,7 @@ import logging
|
||||
|
||||
from common import const
|
||||
|
||||
__all__ = ["DatetimeRangeFilter", "IDSpmFilter", "CustomFilter"]
|
||||
__all__ = ["DatetimeRangeFilter", "IDSpmFilter", 'IDInFilter', "CustomFilter"]
|
||||
|
||||
|
||||
class DatetimeRangeFilter(filters.BaseFilterBackend):
|
||||
@@ -68,6 +68,25 @@ class IDSpmFilter(filters.BaseFilterBackend):
|
||||
return queryset
|
||||
|
||||
|
||||
class IDInFilter(filters.BaseFilterBackend):
|
||||
def get_schema_fields(self, view):
|
||||
return [
|
||||
coreapi.Field(
|
||||
name='ids', location='query', required=False,
|
||||
type='string', example='/api/v1/users/users?ids=1,2,3',
|
||||
description='Filter by id set'
|
||||
)
|
||||
]
|
||||
|
||||
def filter_queryset(self, request, queryset, view):
|
||||
ids = request.query_params.get('ids')
|
||||
if not ids:
|
||||
return queryset
|
||||
id_list = [i.strip() for i in ids.split(',')]
|
||||
queryset = queryset.filter(id__in=id_list)
|
||||
return queryset
|
||||
|
||||
|
||||
class CustomFilter(filters.BaseFilterBackend):
|
||||
|
||||
def get_schema_fields(self, view):
|
||||
|
@@ -9,7 +9,7 @@ from django.http import JsonResponse
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.settings import api_settings
|
||||
|
||||
from common.drf.filters import IDSpmFilter, CustomFilter
|
||||
from common.drf.filters import IDSpmFilter, CustomFilter, IDInFilter
|
||||
from ..utils import lazyproperty
|
||||
|
||||
__all__ = [
|
||||
@@ -49,7 +49,7 @@ class SerializerMixin:
|
||||
|
||||
|
||||
class ExtraFilterFieldsMixin:
|
||||
default_added_filters = [CustomFilter, IDSpmFilter]
|
||||
default_added_filters = [CustomFilter, IDSpmFilter, IDInFilter]
|
||||
filter_backends = api_settings.DEFAULT_FILTER_BACKENDS
|
||||
extra_filter_fields = []
|
||||
extra_filter_backends = []
|
||||
|
Reference in New Issue
Block a user