mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-26 07:22:27 +00:00
[Update] 修改session
This commit is contained in:
42
apps/common/filters.py
Normal file
42
apps/common/filters.py
Normal file
@@ -0,0 +1,42 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from rest_framework import filters
|
||||
from rest_framework.fields import DateTimeField
|
||||
from rest_framework.serializers import ValidationError
|
||||
import logging
|
||||
|
||||
__all__ = ["DatetimeRangeFilter"]
|
||||
|
||||
|
||||
class DatetimeRangeFilter(filters.BaseFilterBackend):
|
||||
def filter_queryset(self, request, queryset, view):
|
||||
if not hasattr(view, 'date_range_filter_fields'):
|
||||
return queryset
|
||||
try:
|
||||
fields = dict(view.date_range_filter_fields)
|
||||
except ValueError:
|
||||
msg = "View {} datetime_filter_fields set is error".format(view.name)
|
||||
logging.error(msg)
|
||||
return queryset
|
||||
kwargs = {}
|
||||
for attr, date_range_keyword in fields.items():
|
||||
if len(date_range_keyword) != 2:
|
||||
continue
|
||||
for i, v in enumerate(date_range_keyword):
|
||||
value = request.query_params.get(v)
|
||||
if not value:
|
||||
continue
|
||||
try:
|
||||
field = DateTimeField()
|
||||
value = field.to_internal_value(value)
|
||||
if i == 0:
|
||||
lookup = "__gte"
|
||||
else:
|
||||
lookup = "__lte"
|
||||
kwargs[attr+lookup] = value
|
||||
except ValidationError as e:
|
||||
print(e)
|
||||
continue
|
||||
if kwargs:
|
||||
queryset = queryset.filter(**kwargs)
|
||||
return queryset
|
@@ -38,8 +38,10 @@ class IDInFilterMixin(object):
|
||||
class IDInCacheFilterMixin(object):
|
||||
|
||||
def filter_queryset(self, queryset):
|
||||
queryset = super(IDInCacheFilterMixin, self).filter_queryset(queryset)
|
||||
queryset = super().filter_queryset(queryset)
|
||||
spm = self.request.query_params.get('spm')
|
||||
if not spm:
|
||||
return queryset
|
||||
cache_key = KEY_CACHE_RESOURCES_ID.format(spm)
|
||||
resources_id = cache.get(cache_key)
|
||||
if resources_id and isinstance(resources_id, list):
|
||||
|
@@ -27,13 +27,14 @@ class BulkSerializerMixin(object):
|
||||
if all((isinstance(self.root, BulkListSerializer),
|
||||
id_attr,
|
||||
request_method in ('PUT', 'PATCH'))):
|
||||
id_field = self.fields[id_attr]
|
||||
id_field = self.fields.get("id") or self.fields.get('pk')
|
||||
if data.get("id"):
|
||||
id_value = id_field.to_internal_value(data.get("id"))
|
||||
else:
|
||||
id_value = id_field.to_internal_value(data.get("pk"))
|
||||
print(">>>>>>>>>>>>>>>>>>>")
|
||||
print(id_attr)
|
||||
ret[id_attr] = id_value
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user