From bab858f8f11b1c0682cece6ca77e86110de52860 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 26 Apr 2022 23:00:08 +0800 Subject: [PATCH 1/5] =?UTF-8?q?face=200.36=20=E6=B5=81=E7=A8=8B=E5=8D=A1?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=8E=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/hrm/serializers.py | 6 +++--- hb_server/apps/hrm/services.py | 4 ++-- hb_server/apps/hrm/views.py | 6 +++--- hb_server/apps/wpm/views.py | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/hb_server/apps/hrm/serializers.py b/hb_server/apps/hrm/serializers.py index e6999f2..a79ca9c 100644 --- a/hb_server/apps/hrm/serializers.py +++ b/hb_server/apps/hrm/serializers.py @@ -20,15 +20,15 @@ class EmployeeNotWorkRemarkSerializer(ModelSerializer): fields = ['not_work_remark'] class FaceLoginSerializer(serializers.Serializer): base64 = serializers.CharField() - tolerance = serializers.FloatField(required=False, default=0.38) + tolerance = serializers.FloatField(required=False, default=0.36) class FaceLoginPathSerializer(serializers.Serializer): path = serializers.CharField() - tolerance = serializers.FloatField(required=False, default=0.38) + tolerance = serializers.FloatField(required=False, default=0.36) class FaceClockCreateSerializer(serializers.Serializer): base64 = serializers.CharField() - tolerance = serializers.FloatField(required=False, default=0.38) + tolerance = serializers.FloatField(required=False, default=0.36) class ClockRecordListSerializer(serializers.ModelSerializer): create_by_ = UserSimpleSerializer(source='create_by', read_only=True) diff --git a/hb_server/apps/hrm/services.py b/hb_server/apps/hrm/services.py index 8b220e8..3bb097e 100644 --- a/hb_server/apps/hrm/services.py +++ b/hb_server/apps/hrm/services.py @@ -10,7 +10,7 @@ from django.core.cache import cache class HRMService: @classmethod - def face_compare_from_path(cls, path, tolerance=0.38): + def face_compare_from_path(cls, path, tolerance=0.36): filepath = settings.BASE_DIR +path try: unknown_picture = face_recognition.load_image_file(filepath) @@ -43,7 +43,7 @@ class HRMService: return None, '匹配多张人脸:' + user_name_str @classmethod - def face_compare_from_base64(cls, base64_data, tolerance=0.38): + def face_compare_from_base64(cls, base64_data, tolerance=0.36): filename = str(uuid.uuid4()) filepath = settings.BASE_DIR +'/temp/' + filename +'.png' with open(filepath, 'wb') as f: diff --git a/hb_server/apps/hrm/views.py b/hb_server/apps/hrm/views.py index 2fa4eec..c167784 100644 --- a/hb_server/apps/hrm/views.py +++ b/hb_server/apps/hrm/views.py @@ -109,7 +109,7 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet): if 8<=now_local.hour<=17: base64_data = base64.urlsafe_b64decode(tran64( request.data.get('base64').replace(' ', '+'))) - user, msg = HRMService.face_compare_from_base64(base64_data, request.data.get('tolerance', 0.38)) + user, msg = HRMService.face_compare_from_base64(base64_data, request.data.get('tolerance', 0.36)) if user: ins, created = ClockRecord.objects.get_or_create( create_by = user, create_time__hour__range = [8,18], @@ -160,7 +160,7 @@ class FaceLogin(CreateAPIView): 人脸识别登录 """ base64_data = base64.urlsafe_b64decode(tran64(request.data.get('base64').replace(' ', '+'))) - user, msg = HRMService.face_compare_from_base64(base64_data, request.data.get('tolerance', 0.38)) + user, msg = HRMService.face_compare_from_base64(base64_data, request.data.get('tolerance', 0.36)) if user: refresh = RefreshToken.for_user(user) # 可设为在岗 @@ -198,7 +198,7 @@ class FacePathLogin(CreateAPIView): """ 人脸识别登录-文件地址 """ - user, msg = HRMService.face_compare_from_path(request.data.get('path'), request.data.get('tolerance', 0.38)) + user, msg = HRMService.face_compare_from_path(request.data.get('path'), request.data.get('tolerance', 0.36)) if user: refresh = RefreshToken.for_user(user) # 可设为在岗 diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 0f12002..36c5f9a 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -439,7 +439,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): WpmService.add_wproduct_flow_log(instance=obj, change_str=change_str) return Response() - @action(methods=['get'], detail=True, perms_map={'get': 'wp_card'}) + @action(methods=['get'], detail=True, perms_map={'get': '*'}) def card(self, request, pk=None): """ 流程卡 From f96645ae29dd13cfd28ad13058fb1d09109dbee7 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 26 Apr 2022 23:14:07 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=88=B0=E5=B2=97=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/srm/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_server/apps/srm/views.py b/hb_server/apps/srm/views.py index f92d6b3..2fe296e 100644 --- a/hb_server/apps/srm/views.py +++ b/hb_server/apps/srm/views.py @@ -130,7 +130,7 @@ class AtWorkCountView(CreateAPIView): """ 到岗天数统计 """ - perms_map = {'get':'*'} + perms_map = {'post':'*'} serializer_class = AtWorkCountSerializer def create(self, request, *args, **kwargs): From 98b48f54b3850cca2fae1f207a9268b104a01708 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 27 Apr 2022 09:24:21 +0800 Subject: [PATCH 3/5] =?UTF-8?q?token=20=E5=85=88=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA1=E5=88=86=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/server/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_server/server/settings.py b/hb_server/server/settings.py index 32a09e1..706bf03 100644 --- a/hb_server/server/settings.py +++ b/hb_server/server/settings.py @@ -181,7 +181,7 @@ REST_FRAMEWORK = { } # simplejwt配置 SIMPLE_JWT = { - 'ACCESS_TOKEN_LIFETIME': timedelta(days=1), + 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=1), } # 跨域配置/可用nginx处理,无需引入corsheaders From 1f3be8d6894aad1ae7d87acf8a8b3bd7244c1fe7 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 27 Apr 2022 10:18:55 +0800 Subject: [PATCH 4/5] token days 1 --- hb_server/server/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_server/server/settings.py b/hb_server/server/settings.py index 706bf03..32a09e1 100644 --- a/hb_server/server/settings.py +++ b/hb_server/server/settings.py @@ -181,7 +181,7 @@ REST_FRAMEWORK = { } # simplejwt配置 SIMPLE_JWT = { - 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=1), + 'ACCESS_TOKEN_LIFETIME': timedelta(days=1), } # 跨域配置/可用nginx处理,无需引入corsheaders From 2c0d4dda3243109fa031bde1a8e95fb1c1b6aaa8 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 27 Apr 2022 10:37:37 +0800 Subject: [PATCH 5/5] =?UTF-8?q?material=20=E5=A2=9E=E5=8A=A0file=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apps/mtm/migrations/0051_material_file.py | 20 +++++++++++++++++++ hb_server/apps/mtm/models.py | 1 + hb_server/apps/mtm/serializers.py | 2 ++ hb_server/apps/mtm/views.py | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 hb_server/apps/mtm/migrations/0051_material_file.py diff --git a/hb_server/apps/mtm/migrations/0051_material_file.py b/hb_server/apps/mtm/migrations/0051_material_file.py new file mode 100644 index 0000000..027f417 --- /dev/null +++ b/hb_server/apps/mtm/migrations/0051_material_file.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.9 on 2022-04-27 02:36 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0004_auto_20220318_1705'), + ('mtm', '0050_auto_20220419_1109'), + ] + + operations = [ + migrations.AddField( + model_name='material', + name='file', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.file', verbose_name='文件'), + ), + ] diff --git a/hb_server/apps/mtm/models.py b/hb_server/apps/mtm/models.py index d54c93a..9266ff6 100644 --- a/hb_server/apps/mtm/models.py +++ b/hb_server/apps/mtm/models.py @@ -43,6 +43,7 @@ class Material(CommonAModel): count = models.PositiveIntegerField('物料库存总数', default=0) count_safe = models.PositiveIntegerField('安全库存总数', null=True, blank=True) piece_count = models.PositiveSmallIntegerField('单片玻璃数量', null=True, blank=True) + file = models.ForeignKey(File, verbose_name='文件', on_delete=models.SET_NULL, null=True, blank=True) class Meta: verbose_name = '物料表' verbose_name_plural = verbose_name diff --git a/hb_server/apps/mtm/serializers.py b/hb_server/apps/mtm/serializers.py index e0afabb..ad6c0e1 100644 --- a/hb_server/apps/mtm/serializers.py +++ b/hb_server/apps/mtm/serializers.py @@ -8,12 +8,14 @@ from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSeri class MaterialSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer): + file_ = FileSimpleSerializer(source='file', read_only=True) class Meta: model = Material fields = '__all__' class MaterialDetailSerializer(serializers.ModelSerializer): processes_ = serializers.SerializerMethodField() + file_ = FileSimpleSerializer(source='file', read_only=True) class Meta: model = Material fields = '__all__' diff --git a/hb_server/apps/mtm/views.py b/hb_server/apps/mtm/views.py index 9318c36..d6b9d8c 100644 --- a/hb_server/apps/mtm/views.py +++ b/hb_server/apps/mtm/views.py @@ -19,7 +19,7 @@ class MaterialViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet): """ perms_map = {'get': '*', 'post': 'material_create', 'put': 'material_update', 'delete': 'material_delete'} - queryset = Material.objects.all() + queryset = Material.objects.select_related('file').all() serializer_class = MaterialSerializer search_fields = ['name', 'number'] filterset_class = MaterialFilterSet