From a0f11e8af764dc75aed61798bf8e92c65a0f8f6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Mon, 12 Sep 2022 21:23:26 +0800 Subject: [PATCH] =?UTF-8?q?event=20serializer=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ecm/models.py | 2 +- apps/ecm/serializers.py | 19 ++++++++++++++++++- apps/ecm/service.py | 2 +- apps/ecm/views.py | 5 +++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/apps/ecm/models.py b/apps/ecm/models.py index e6f343a0..695343e2 100644 --- a/apps/ecm/models.py +++ b/apps/ecm/models.py @@ -86,7 +86,7 @@ class Event(CommonBDModel): vchannel = models.ForeignKey(TDevice, verbose_name='抓拍设备', on_delete=models.SET_NULL, null=True, blank=True) location = models.JSONField('事件点位坐标', default=dict, null=False, blank=True) opl = models.ForeignKey(Opl, verbose_name='关联许可证', on_delete=models.SET_NULL, null=True, blank=True) - obj_cate = models.CharField('发生对象', max_length=20, help_text='people(人员)/...') + obj_cate = models.CharField('发生对象', max_length=20, help_text='people(人员)/opl(作业)/other(其他)...') employee = models.ForeignKey(Employee, verbose_name='当事人', on_delete=models.SET_NULL, null=True, blank=True) msg = models.TextField('事件文本', null=True, blank=True) diff --git a/apps/ecm/serializers.py b/apps/ecm/serializers.py index be8fa060..f3e770a6 100644 --- a/apps/ecm/serializers.py +++ b/apps/ecm/serializers.py @@ -8,7 +8,7 @@ from rest_framework import serializers from apps.system.serializers import UserSimpleSerializer from apps.utils.constants import EXCLUDE_FIELDS from rest_framework.exceptions import ParseError -from apps.hrm.serializers import EmployeeSerializer +from apps.hrm.serializers import EmployeeSerializer, EmployeeSimpleSerializer class EventCateCreateUpdateSerializer(CustomModelSerializer): @@ -75,9 +75,26 @@ class NotifySettingsSerializer(CustomModelSerializer): class EventSerializer(serializers.ModelSerializer): + area_ = AreaSerializer(source='area', read_only=True) + cates_ = EventCateSimpleSerializer(source='cates', read_only=True, many=True) + employee_ = EmployeeSimpleSerializer(source='employee', read_only=True) + operation_name = serializers.CharField(source='opl.operation.name', read_only=True) + vchannel_ = TDeviceSimpleSerializer(source='vchannel', read_only=True) + handle_user_name = serializers.CharField(source='handle_user.name', read_only=True) + face_img_f = MyFilePathField(source='face_img', read_only=True) + global_img_f = MyFilePathField(source='global_img', read_only=True) + voice_f = MyFilePathField(source='voice', read_only=True) + + class Meta: + model = Event + fields = '__all__' + + +class EventDetailSerializer(serializers.ModelSerializer): area_ = AreaSerializer(source='area', read_only=True) cates_ = EventCateSimpleSerializer(source='cates', read_only=True, many=True) employee_ = EmployeeSerializer(source='employee', read_only=True) + operation_name = serializers.CharField(source='opl.operation.name', read_only=True) vchannel_ = TDeviceSimpleSerializer(source='vchannel', read_only=True) handle_user_name = serializers.CharField(source='handle_user.name', read_only=True) face_img_f = MyFilePathField(source='face_img', read_only=True) diff --git a/apps/ecm/service.py b/apps/ecm/service.py index 00e561fa..b2d2917a 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -135,7 +135,7 @@ def save_voice_and_speak(event: Event): for i in sps2: if i not in sps: sps.append(i) - myLogger.info('获取到喇叭:' + str(sps)) + # myLogger.info('获取到喇叭:' + str(sps)) if sps: spClient.speak(event.voice, sps, v_num) except Exception: diff --git a/apps/ecm/views.py b/apps/ecm/views.py index a09f54e7..c923b7fd 100644 --- a/apps/ecm/views.py +++ b/apps/ecm/views.py @@ -19,7 +19,7 @@ from apps.ecm.serializers import (AlgoChannelCreateSerializer, AlgoChannelSerializer, EventAggSerializer, EventCateCreateUpdateSerializer, EventCateListSerializer, - EventHandleSerializer, EventSerializer, + EventHandleSerializer, EventSerializer, EventSimpleSerializer, NotifySettingsSerializer, RemindSerializer) from apps.ecm.service import update_remind_read from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet @@ -75,7 +75,8 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, DestroyModelMixin, Custom perms_map = {'get': '*'} queryset = Event.objects.all() serializer_class = EventSerializer - select_related_fields = ['area', 'employee', 'handle_user', 'vchannel'] + retrieve_serializer_class = EventSimpleSerializer + select_related_fields = ['area', 'employee', 'handle_user', 'vchannel', 'opl'] prefetch_related_fields = ['cates'] filterset_class = EventFilterSet