From d4e94066668ff7f221fbd5e1ed7ff4d6d4fd4ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Wed, 19 Oct 2022 11:59:52 +0800 Subject: [PATCH] =?UTF-8?q?clockrecord=E5=A2=9E=E5=8A=A0=E7=AD=9B=E9=80=89?= =?UTF-8?q?/=E8=BA=AB=E4=BB=BD=E8=AF=81=E5=8F=B7=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=8F=96=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/hrm/filters.py | 2 +- apps/hrm/views.py | 2 +- apps/rpm/serializers.py | 4 +++- apps/rpm/views.py | 2 ++ apps/utils/tools.py | 8 ++++---- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/hrm/filters.py b/apps/hrm/filters.py index c31fc542..48641244 100755 --- a/apps/hrm/filters.py +++ b/apps/hrm/filters.py @@ -10,7 +10,7 @@ class ClockRecordFilterSet(filters.FilterSet): class Meta: model = ClockRecord - fields = ['employee', 'start_create', 'end_create', 'year', 'month', 'type'] + fields = ['employee', 'start_create', 'end_create', 'year', 'month', 'type', 'employee__type', 'employee__belong_dept'] def filter_year(self, queryset, name, value): return queryset.filter(create_time__year=value) diff --git a/apps/hrm/views.py b/apps/hrm/views.py index 2c30ee94..86680659 100755 --- a/apps/hrm/views.py +++ b/apps/hrm/views.py @@ -216,7 +216,7 @@ class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet): permission_classes = [AllowAny] queryset = ClockRecord.objects.all() select_related_fields = ['employee'] - search_fields = ['employee__name', 'employee__number'] + search_fields = ['employee__name', 'employee__number', 'employee__phone'] serializer_class = ClockRecordListSerializer filterset_class = ClockRecordFilterSet ordering = ['-pk'] diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index bffc8c71..d97dd79e 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -8,7 +8,7 @@ from apps.utils.fields import MyFilePathField from apps.utils.serializers import CustomModelSerializer from apps.system.serializers import DictSerializer, DictSimpleSerializer, FileSerializer, UserSimpleSerializer from rest_framework import serializers -from rest_framework.exceptions import ParseError +from rest_framework.exceptions import ParseError, ValidationError from django.db import transaction from apps.third.dahua import dhClient from apps.third.tapis import dhapis @@ -135,6 +135,8 @@ class RemployeeCreateSerializer(CustomModelSerializer): fields = ['name', 'phone', 'photo', 'id_number', 'rparty'] def create(self, validated_data): + if Remployee.objects.filter(id_number=validated_data['id_number'], rparty=validated_data['rparty']).exists(): + raise ValidationError('该成员已存在') with transaction.atomic(): dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo']) return super().create(validated_data) diff --git a/apps/rpm/views.py b/apps/rpm/views.py index 83ab804f..9a9f3d0a 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -95,6 +95,8 @@ class RemployeeViewSet(CustomModelViewSet): create_serializer_class = RemployeeCreateSerializer update_serializer_class = RemployeeUpdateSerializer serializer_class = RemployeeSerializer + search_fields = ['name', 'phone', 'id_number'] + filterset_fields = ['rparty'] def get_queryset(self): queryset = super().get_queryset() diff --git a/apps/utils/tools.py b/apps/utils/tools.py index eacb1cdb..cf35edb9 100755 --- a/apps/utils/tools.py +++ b/apps/utils/tools.py @@ -106,10 +106,10 @@ def p_in_poly(p, poly): def check_id_number_e(val): - is_ok, msg = check_id_number(val) - if is_ok: - return val - raise ValidationError(detail=msg) + re_s = r'/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;' + if not re.match(re_s, val): + raise ValidationError('身份证号校验错误') + return val def check_id_number(idcard):