From 7eba5a8e13f19be534c6305bd64e1738a6c129e2 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 11 Mar 2024 08:45:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20base=20=E4=BB=8Erequest.data?= =?UTF-8?q?=E8=8E=B7=E5=8F=96page=E5=92=8Csize?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/pagination.py | 21 +++++++++++++++++++-- apps/utils/serializers.py | 21 +++++++++++++-------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/apps/utils/pagination.py b/apps/utils/pagination.py index cd1b1a0e..86ccea11 100755 --- a/apps/utils/pagination.py +++ b/apps/utils/pagination.py @@ -1,4 +1,4 @@ -from rest_framework.pagination import PageNumberPagination +from rest_framework.pagination import PageNumberPagination, _positive_int from rest_framework.exceptions import ParseError @@ -9,8 +9,25 @@ class MyPagination(PageNumberPagination): page_size = 10 page_size_query_param = 'page_size' + def get_page_number(self, request, paginator): + if 'page' in request.data: + return request.data['page'] + return super().get_page_number(request, paginator) + + def get_page_size(self, request): + if 'page_size' in request.data: + try: + return _positive_int( + request.data['page_size'], + strict=True, + cutoff=self.max_page_size + ) + except (KeyError, ValueError): + pass + return super().get_page_size(request) + def paginate_queryset(self, queryset, request, view=None): - if request.query_params.get('pageoff', None) or request.query_params.get('page', None) == '0': + if request.query_params.get('pageoff', None) or request.query_params.get('page', None) == '0' or request.data.get('page', None) in (0, '0'): if queryset.count() < 3000: return None raise ParseError('单次请求数据量大,请分页获取') diff --git a/apps/utils/serializers.py b/apps/utils/serializers.py index bf6ed0b9..d0c0bfc5 100755 --- a/apps/utils/serializers.py +++ b/apps/utils/serializers.py @@ -6,8 +6,10 @@ from rest_framework.request import Request class PkSerializer(serializers.Serializer): - ids = serializers.ListField(child=serializers.CharField(max_length=20), label="主键ID列表") - soft = serializers.BooleanField(label="是否软删除", default=True, required=False) + ids = serializers.ListField( + child=serializers.CharField(max_length=20), label="主键ID列表") + soft = serializers.BooleanField( + label="是否软删除", default=True, required=False) class GenSignatureSerializer(serializers.Serializer): @@ -39,17 +41,20 @@ class CustomModelSerializer(DynamicFieldsMixin, serializers.ModelSerializer): def update(self, instance, validated_data): if self.request: if hasattr(instance, 'update_by'): - validated_data['update_by'] = getattr(self.request, 'user', None) + validated_data['update_by'] = getattr( + self.request, 'user', None) return super().update(instance, validated_data) + class QuerySerializer(serializers.Serializer): field = serializers.CharField(label='字段名') - compare = serializers.ChoiceField(label='比较式', choices=["", "!", "gte", "gt", "lte", "lt", "in", "contains"]) + compare = serializers.ChoiceField( + label='比较式', choices=["", "!", "gte", "gt", "lte", "lt", "in", "contains"]) value = serializers.CharField(label='值') class ComplexSerializer(serializers.Serializer): - # page = serializers.IntegerField(min_value=0) - # page_size = serializers.IntegerField(min_value=1) - # query = serializers.CharField(label='获取字段名') - querys = serializers.ListField(child=QuerySerializer(many=True), label="查询列表", required=False) + page = serializers.IntegerField(min_value=0, required=False) + page_size = serializers.IntegerField(min_value=1, required=False) + querys = serializers.ListField(child=QuerySerializer( + many=True), label="查询列表", required=False) From a32cefb93956abe9deebeb862631a629254e8fa6 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 11 Mar 2024 09:04:10 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20operationlist=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/opm/filters.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/opm/filters.py b/apps/opm/filters.py index 0b2ddd05..03ab6d9c 100644 --- a/apps/opm/filters.py +++ b/apps/opm/filters.py @@ -1,6 +1,7 @@ from django_filters import rest_framework as filters from apps.opm.models import Operation + class OperationFilterset(filters.FilterSet): class Meta: model = Operation @@ -9,4 +10,5 @@ class OperationFilterset(filters.FilterSet): 'area': ['exact'], 'create_by': ['exact'], 'create_time': ['gte', 'lte'], - } \ No newline at end of file + 'cates': ['exact', 'in'] + } From 38b7d0c586a3ce734b7000cd5c1ac6bffdb5f104 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 11 Mar 2024 15:38:09 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20time=5F20=5Fy=20=E6=94=B9=E4=B8=BA6?= =?UTF-8?q?=E7=82=B9=E5=8D=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/hrm/services.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/hrm/services.py b/apps/hrm/services.py index 10673545..01261e02 100755 --- a/apps/hrm/services.py +++ b/apps/hrm/services.py @@ -309,7 +309,7 @@ class HrmService: time_20_x = datetime(year=s_time_f.year, month=s_time_f.month, day=s_time_f.day, hour=16, minute=0, second=0, tzinfo=tzinfo) time_20_y = datetime(year=s_time_f.year, month=s_time_f.month, - day=s_time_f.day, hour=18, minute=10, second=0, tzinfo=tzinfo) + day=s_time_f.day, hour=18, minute=30, second=0, tzinfo=tzinfo) if time_10_x < s_time_f < time_10_y: card_type = 10 elif time_20_x < s_time_f < time_20_y: