diff --git a/apps/develop/views.py b/apps/develop/views.py index 8051191a..7990e50e 100755 --- a/apps/develop/views.py +++ b/apps/develop/views.py @@ -13,12 +13,14 @@ from apps.develop.tasks import backup_database, backup_media, reload_web_git, re from rest_framework.exceptions import APIException from apps.ecm.service import check_not_in_place, create_remind, handle_xx_event, loc_change, notify_event, rail_in, snap_and_analyse from apps.ecm.tasks import opl_task, update_count_people +from apps.hrm.models import Employee from apps.opm.models import Opl from apps.third.dahua import dhClient from apps.third.speaker import spClient from apps.third.models import TDevice from apps.utils.sms import send_sms from apps.utils.speech import generate_voice +from apps.utils.tools import get_info_from_id from apps.utils.viewsets import CustomGenericViewSet from apps.utils.wx import wxClient @@ -297,11 +299,6 @@ class TestViewSet(CustomGenericViewSet): def correct_rail(self, request, pk=None): pass - @action(methods=['post'], detail=False, serializer_class=Serializer) - def test_not_in_place(self, request, pk=None): - check_not_in_place(Opl.objects.get(id='1568880208688320512')) - return Response() - @action(methods=['post'], detail=False, serializer_class=SpeakerSerializer) def test_speaker(self, request, pk=None): spClient.speak(path='/media/2022/09/11/349b3451-50b9-4501-aded-c85a76967920.mp3', sns=request.data['sns'], @@ -314,6 +311,16 @@ class TestViewSet(CustomGenericViewSet): check_not_in_place(opl=Opl.objects.get(id=opl)) return Response() + @action(methods=['post'], detail=False, serializer_class=Serializer) + def correct_gender(self, request, pk=None): + objs = Employee.objects.get_queryset(all=True).all() + for i in objs: + if i.id_number: + ret = get_info_from_id(i.id_number) + i.gender = ret['gender'] + i.save() + return Response() + @action(methods=['post'], detail=False, serializer_class=Serializer) def send_wx_msg(self, request, pk=None): """微信模板消息发送测试 diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 66c44d4b..bdfa0eb6 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -15,7 +15,7 @@ from apps.third.dahua import dhClient from apps.third.tapis import dhapis from django.conf import settings from django.core.cache import cache -from apps.utils.tools import check_id_number_e, check_phone_e +from apps.utils.tools import check_id_number_e, check_phone_e, get_info_from_id class EmployeeSimpleSerializer(CustomModelSerializer): @@ -60,6 +60,9 @@ class EmployeeCreateUpdateSerializer(CustomModelSerializer): return instance def update(self, instance, validated_data): + id_number = validated_data['id_number'] + ret = get_info_from_id(id_number) + validated_data['gender'] = ret['gender'] old_photo = instance.photo old_job_state = instance.job_state instance = super().update(instance, validated_data) @@ -98,6 +101,17 @@ class EmployeeImproveSerializer(CustomModelSerializer): class Meta: model = Employee fields = ['photo', 'id_number', 'email', 'gender', 'signature', 'photo_f', 'signature_f', 'phone'] + extra_kwargs = { + 'number': {'required': True}, + 'photo': {'required': True}, + 'id_number': {'required': True}, + } + + def update(self, instance, validated_data): + id_number = validated_data['id_number'] + ret = get_info_from_id(id_number) + validated_data['gender'] = ret['gender'] + return super().update(instance, validated_data) class ChannelAuthoritySerializer(serializers.Serializer): diff --git a/apps/utils/tools.py b/apps/utils/tools.py index b1b1b68d..c8cfbda6 100755 --- a/apps/utils/tools.py +++ b/apps/utils/tools.py @@ -112,6 +112,17 @@ def check_id_number_e(val): return val +def get_info_from_id(val): + birth = val[6:14] + birth_year = birth[0:4] + age = datetime.now().year - int(birth_year) + sex = int(val[-2]) + gender = '女' + if sex/2: + gender = '男' + return dict(age=age, gender=gender) + + def check_id_number(idcard): """校验身份证号