From 72372c32154ea18644234ffa45f4eababee08d71 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 16 Sep 2023 22:52:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20face=5Fdata=E4=B8=AD=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E5=BD=A2=E5=BC=8F=E5=AD=98=E5=82=A8json=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/hrm/models.py | 2 +- apps/hrm/serializers.py | 10 ++++++++-- apps/hrm/tasks.py | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/hrm/models.py b/apps/hrm/models.py index 852cf677..03c12439 100755 --- a/apps/hrm/models.py +++ b/apps/hrm/models.py @@ -44,7 +44,7 @@ class Employee(CommonBModel): not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200) third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) # 主要是定位卡信息 post = models.ForeignKey(Post, verbose_name='所属岗位', on_delete=models.SET_NULL, null=True, blank=True) - face_data = models.JSONField('人脸数据', null=True, blank=True) + face_data = models.JSONField('人脸数据', null=True, blank=True) # 存储的是字典(模型名:人脸数据) class Meta: verbose_name = '员工补充信息' verbose_name_plural = verbose_name diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 60ce320c..930036b6 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -73,9 +73,15 @@ class EmployeeCreateUpdateSerializer(CustomModelSerializer): if old_photo != instance.photo: # 如果照片有变动,需要更新人脸库 # 使用的是face_recongition face_data, msg = HrmService.get_facedata_from_img_x(settings.BASE_DIR + instance.photo) + in_face_data = instance.face_data if face_data: - instance.face_data = face_data - instance.save() + if isinstance(in_face_data, dict): + in_face_data['dlib'] = face_data + instance.face_data = in_face_data + instance.save() + else: + instance.face_data = {'dlib': face_data} + instance.save() else: raise ParseError(msg) from apps.hrm.tasks import update_all_facedata_cache diff --git a/apps/hrm/tasks.py b/apps/hrm/tasks.py index 0bae8d90..debb0ab1 100755 --- a/apps/hrm/tasks.py +++ b/apps/hrm/tasks.py @@ -97,7 +97,7 @@ def update_all_facedata_cache(): """ 更新人脸数据缓存 """ - facedata_queyset = Employee.objects.filter(face_data__isnull=False).values('id', 'face_data') + facedata_queyset = Employee.objects.filter(face_data__dlib__isnull=False).values('id', 'face_data') face_eps = [] face_datas = [] for i in facedata_queyset: