Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -23,6 +23,36 @@ from rest_framework.filters import BaseFilterBackend
|
|||||||
from dvadmin.system.models import Dept, ApiWhiteList, RoleMenuButtonPermission
|
from dvadmin.system.models import Dept, ApiWhiteList, RoleMenuButtonPermission
|
||||||
from dvadmin.utils.models import CoreModel
|
from dvadmin.utils.models import CoreModel
|
||||||
|
|
||||||
|
class CoreModelFilterBankend(BaseFilterBackend):
|
||||||
|
"""
|
||||||
|
自定义时间范围过滤器
|
||||||
|
"""
|
||||||
|
def filter_queryset(self, request, queryset, view):
|
||||||
|
create_datetime_after = request.query_params.get('create_datetime_after', None)
|
||||||
|
create_datetime_before = request.query_params.get('create_datetime_before', None)
|
||||||
|
update_datetime_after = request.query_params.get('update_datetime_after', None)
|
||||||
|
update_datetime_before = request.query_params.get('update_datetime_after', None)
|
||||||
|
if any([create_datetime_after, create_datetime_before, update_datetime_after, update_datetime_before]):
|
||||||
|
create_filter = Q()
|
||||||
|
if create_datetime_after and create_datetime_before:
|
||||||
|
create_filter &= Q(create_datetime__gte=create_datetime_after) & Q(create_datetime__lte=create_datetime_before)
|
||||||
|
elif create_datetime_after:
|
||||||
|
create_filter &= Q(create_datetime__gte=create_datetime_after)
|
||||||
|
elif create_datetime_before:
|
||||||
|
create_filter &= Q(create_datetime__lte=create_datetime_before)
|
||||||
|
|
||||||
|
# 更新时间范围过滤条件
|
||||||
|
update_filter = Q()
|
||||||
|
if update_datetime_after and update_datetime_before:
|
||||||
|
update_filter &= Q(update_datetime__gte=update_datetime_after) & Q(update_datetime__lte=update_datetime_before)
|
||||||
|
elif update_datetime_after:
|
||||||
|
update_filter &= Q(update_datetime__gte=update_datetime_after)
|
||||||
|
elif update_datetime_before:
|
||||||
|
update_filter &= Q(update_datetime__lte=update_datetime_before)
|
||||||
|
# 结合两个时间范围过滤条件
|
||||||
|
queryset = queryset.filter(create_filter & update_filter)
|
||||||
|
return queryset
|
||||||
|
return queryset
|
||||||
|
|
||||||
def get_dept(dept_id: int, dept_all_list=None, dept_list=None):
|
def get_dept(dept_id: int, dept_all_list=None, dept_list=None):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from drf_yasg.utils import swagger_auto_schema
|
|||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.viewsets import ModelViewSet
|
from rest_framework.viewsets import ModelViewSet
|
||||||
|
|
||||||
from dvadmin.utils.filters import DataLevelPermissionsFilter
|
from dvadmin.utils.filters import DataLevelPermissionsFilter, CoreModelFilterBankend
|
||||||
from dvadmin.utils.import_export_mixin import ExportSerializerMixin, ImportSerializerMixin
|
from dvadmin.utils.import_export_mixin import ExportSerializerMixin, ImportSerializerMixin
|
||||||
from dvadmin.utils.json_response import SuccessResponse, ErrorResponse, DetailResponse
|
from dvadmin.utils.json_response import SuccessResponse, ErrorResponse, DetailResponse
|
||||||
from dvadmin.utils.permission import CustomPermission
|
from dvadmin.utils.permission import CustomPermission
|
||||||
@@ -23,18 +23,6 @@ from dvadmin.system.models import FieldPermission, MenuField
|
|||||||
from django_restql.mixins import QueryArgumentsMixin
|
from django_restql.mixins import QueryArgumentsMixin
|
||||||
|
|
||||||
|
|
||||||
class CoreModelFliterSet(FilterSet):
|
|
||||||
"""
|
|
||||||
封装一个时间范围过滤器:
|
|
||||||
使用方式:
|
|
||||||
{'create_datetime_after': '2024-01-01 8:00', 'create_datetime_before': '2024-01-05 10:00'}
|
|
||||||
"""
|
|
||||||
create_datetime = DateTimeFromToRangeFilter()
|
|
||||||
update_datetime = DateTimeFromToRangeFilter()
|
|
||||||
class Meta:
|
|
||||||
model = None
|
|
||||||
fields = "__all__"
|
|
||||||
|
|
||||||
class CustomModelViewSet(ModelViewSet, ImportSerializerMixin, ExportSerializerMixin, QueryArgumentsMixin):
|
class CustomModelViewSet(ModelViewSet, ImportSerializerMixin, ExportSerializerMixin, QueryArgumentsMixin):
|
||||||
"""
|
"""
|
||||||
自定义的ModelViewSet:
|
自定义的ModelViewSet:
|
||||||
@@ -51,8 +39,7 @@ class CustomModelViewSet(ModelViewSet, ImportSerializerMixin, ExportSerializerMi
|
|||||||
update_serializer_class = None
|
update_serializer_class = None
|
||||||
filter_fields = '__all__'
|
filter_fields = '__all__'
|
||||||
search_fields = ()
|
search_fields = ()
|
||||||
extra_filter_class = [DataLevelPermissionsFilter]
|
extra_filter_class = [CoreModelFilterBankend,DataLevelPermissionsFilter]
|
||||||
filterset_class = CoreModelFliterSet
|
|
||||||
permission_classes = [CustomPermission]
|
permission_classes = [CustomPermission]
|
||||||
import_field_dict = {}
|
import_field_dict = {}
|
||||||
export_field_label = {}
|
export_field_label = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user