From 91ec77ba5fba30363c95b80c242480dddbb516b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 23 Jun 2022 17:54:33 +0800 Subject: [PATCH] opl_cate deatil --- apps/hrm/serializers.py | 36 +++++++++++++++++++----------------- apps/opm/serializers.py | 11 +++++++++++ apps/opm/views.py | 4 +++- apps/system/serializers.py | 5 +++++ 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 340b4720..21c56e37 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -48,25 +48,27 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer): @transaction.atomic def create(self, validated_data): - instance = super().create(validated_data) - if settings.DAHUA_ENABLED and dhClient: - dahua_data = HrmService.sync_dahua_employee(ep=instance) - third_info = instance.third_info - third_info.update(dahua_data) - instance.third_info = third_info - instance.save() - return instance + with transaction.atomic(): + instance = super().create(validated_data) + if settings.DAHUA_ENABLED and dhClient: + dahua_data = HrmService.sync_dahua_employee(ep=instance) + third_info = instance.third_info + third_info.update(dahua_data) + instance.third_info = third_info + instance.save() + return instance - @transaction.atomic def update(self, instance, validated_data): - old_photo = instance.photo - instance = super().update(instance, validated_data) - dahua_data = HrmService.sync_dahua_employee(ep=instance, old_photo=old_photo) - third_info = instance.third_info - third_info.update(dahua_data) - instance.third_info = third_info - instance.save() - return instance + with transaction.atomic(): + old_photo = instance.photo + instance = super().update(instance, validated_data) + if settings.DAHUA_ENABLED and dhClient: + dahua_data = HrmService.sync_dahua_employee(ep=instance, old_photo=old_photo) + third_info = instance.third_info + third_info.update(dahua_data) + instance.third_info = third_info + instance.save() + return instance class ChannelAuthoritySerializer(serializers.Serializer): diff --git a/apps/opm/serializers.py b/apps/opm/serializers.py index 37bb83db..ef92acad 100644 --- a/apps/opm/serializers.py +++ b/apps/opm/serializers.py @@ -1,5 +1,6 @@ from apps.hrm.models import Certificate from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplCert, OplWorker +from apps.system.serializers import DictSerializer, DictSimpleSerializer from apps.utils.serializers import CustomModelSerializer from apps.utils.constants import EXCLUDE_FIELDS from rest_framework import serializers @@ -20,6 +21,16 @@ class OplCateSerializer(CustomModelSerializer): fields = '__all__' +class OplCateDetailSerializer(CustomModelSerializer): + measure_options_ = DictSimpleSerializer(source='measure_options', read_only=True, many=True) + risk_options_ = DictSimpleSerializer(source='risk_options', read_only=True, many=True) + close_options_ = DictSimpleSerializer(source='close_options', read_only=True, many=True) + + class Meta: + model = OplCate + fields = '__all__' + + class OperationCreateUpdateSerializer(CustomModelSerializer): class Meta: model = Operation diff --git a/apps/opm/views.py b/apps/opm/views.py index bc7ae755..25fc453a 100644 --- a/apps/opm/views.py +++ b/apps/opm/views.py @@ -1,7 +1,7 @@ from django.shortcuts import render from rest_framework.response import Response from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplWorker -from apps.opm.serializers import GasCheckCreateUpdateSerializer, GasCheckSerializer, OperationCreateUpdateSerializer, OperationSerializer, OplCateCreateUpdateSerializer, OplCateSerializer, OplCreateUpdateSerializer, OplSerializer, OplWorkerCreateSerializer, OplWorkerUpdateSerializer +from apps.opm.serializers import GasCheckCreateUpdateSerializer, GasCheckSerializer, OperationCreateUpdateSerializer, OperationSerializer, OplCateCreateUpdateSerializer, OplCateDetailSerializer, OplCateSerializer, OplCreateUpdateSerializer, OplSerializer, OplWorkerCreateSerializer, OplWorkerUpdateSerializer from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from rest_framework.exceptions import ParseError from rest_framework.mixins import CreateModelMixin, ListModelMixin, DestroyModelMixin @@ -14,7 +14,9 @@ class OplCateViewSet(CustomModelViewSet): queryset = OplCate.objects.all() create_serializer_class = OplCateCreateUpdateSerializer update_serializer_class = OplCateCreateUpdateSerializer + retrieve_serializer_class = OplCateDetailSerializer serializer_class = OplCateSerializer + prefetch_related_fields = ['measure_options', 'risk_options', 'close_options'] class OperationViewSet(CustomModelViewSet): diff --git a/apps/system/serializers.py b/apps/system/serializers.py index cd318bef..c206d1bd 100755 --- a/apps/system/serializers.py +++ b/apps/system/serializers.py @@ -128,6 +128,11 @@ class DictSerializer(CustomModelSerializer): model = Dictionary fields = '__all__' +class DictSimpleSerializer(CustomModelSerializer): + class Meta: + model = Dictionary + fields = ['id', 'name', 'code'] + class DictCreateUpdateSerializer(CustomModelSerializer): """