mirror of https://github.com/jumpserver/jumpserver
perf: search support keyword q=str to search
parent
2ec9a43317
commit
9e3ba00bc4
|
|
@ -1,5 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
|
from rest_framework.filters import SearchFilter as SearchFilterBase
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
@ -35,6 +36,14 @@ __all__ = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SearchFilter(SearchFilterBase):
|
||||||
|
def get_search_terms(self, request):
|
||||||
|
params = request.query_params.get(self.search_param, '') or request.query_params.get('search', '')
|
||||||
|
params = params.replace('\x00', '') # strip null characters
|
||||||
|
params = params.replace(',', ' ')
|
||||||
|
return params.split()
|
||||||
|
|
||||||
|
|
||||||
class BaseFilterSet(drf_filters.FilterSet):
|
class BaseFilterSet(drf_filters.FilterSet):
|
||||||
days = drf_filters.NumberFilter(method="filter_days")
|
days = drf_filters.NumberFilter(method="filter_days")
|
||||||
days__lt = drf_filters.NumberFilter(method="filter_days")
|
days__lt = drf_filters.NumberFilter(method="filter_days")
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,12 @@ REST_FRAMEWORK = {
|
||||||
),
|
),
|
||||||
'DEFAULT_FILTER_BACKENDS': (
|
'DEFAULT_FILTER_BACKENDS': (
|
||||||
'django_filters.rest_framework.DjangoFilterBackend',
|
'django_filters.rest_framework.DjangoFilterBackend',
|
||||||
'rest_framework.filters.SearchFilter',
|
'common.drf.filters.SearchFilter',
|
||||||
'common.drf.filters.RewriteOrderingFilter',
|
'common.drf.filters.RewriteOrderingFilter',
|
||||||
),
|
),
|
||||||
'DEFAULT_METADATA_CLASS': 'common.drf.metadata.SimpleMetadataWithFilters',
|
'DEFAULT_METADATA_CLASS': 'common.drf.metadata.SimpleMetadataWithFilters',
|
||||||
'ORDERING_PARAM': "order",
|
'ORDERING_PARAM': "order",
|
||||||
'SEARCH_PARAM': "search",
|
'SEARCH_PARAM': "q",
|
||||||
'DATETIME_FORMAT': '%Y/%m/%d %H:%M:%S %z',
|
'DATETIME_FORMAT': '%Y/%m/%d %H:%M:%S %z',
|
||||||
'DATETIME_INPUT_FORMATS': ['%Y/%m/%d %H:%M:%S %z', 'iso-8601', '%Y-%m-%d %H:%M:%S %z'],
|
'DATETIME_INPUT_FORMATS': ['%Y/%m/%d %H:%M:%S %z', 'iso-8601', '%Y-%m-%d %H:%M:%S %z'],
|
||||||
'DEFAULT_PAGINATION_CLASS': 'jumpserver.rewriting.pagination.MaxLimitOffsetPagination',
|
'DEFAULT_PAGINATION_CLASS': 'jumpserver.rewriting.pagination.MaxLimitOffsetPagination',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue