From 366a3a7616c567d47f9f52e70d72fc9d8a91137f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Sat, 2 Jul 2022 15:59:03 +0800 Subject: [PATCH] notify setting event_cate_name --- apps/ecm/models.py | 4 ++-- apps/ecm/serializers.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/apps/ecm/models.py b/apps/ecm/models.py index 83ba3054..141f2f0b 100644 --- a/apps/ecm/models.py +++ b/apps/ecm/models.py @@ -2,7 +2,7 @@ from django.db import models from apps.am.models import Area from apps.hrm.models import Employee from apps.utils.constants import Algo -from apps.utils.models import BaseModel, CommonAModel, CommonBModel +from apps.utils.models import BaseModel, CommonADModel, CommonAModel, CommonBModel from apps.system.models import Dept, File, Post, User from apps.third.models import TDevice from django.utils import timezone @@ -42,7 +42,7 @@ class AlgoChannel(BaseModel): unique_together = ('algo', 'vchannel') -class NotifySetting(CommonAModel): +class NotifySetting(CommonADModel): """ 提醒配置 """ diff --git a/apps/ecm/serializers.py b/apps/ecm/serializers.py index fdfa99fb..dc74aa9c 100644 --- a/apps/ecm/serializers.py +++ b/apps/ecm/serializers.py @@ -6,6 +6,7 @@ from apps.utils.serializers import CustomModelSerializer from rest_framework import serializers from apps.system.serializers import UserSimpleSerializer from apps.utils.constants import EXCLUDE_FIELDS +from rest_framework.exceptions import ParseError class EventCateCreateUpdateSerializer(CustomModelSerializer): @@ -33,6 +34,7 @@ class EventCateUpdateSerializer(CustomModelSerializer): class NotifySettingsSerializer(CustomModelSerializer): + event_cate_name = serializers.CharField(source='event_cate.name', read_only=True) post_name = serializers.CharField(source='post.name', read_only=True) user_name = serializers.CharField(source='user.name', read_only=True) @@ -40,6 +42,34 @@ class NotifySettingsSerializer(CustomModelSerializer): model = NotifySetting fields = '__all__' + def check(self, validated_data): + post = validated_data.get('post', None) + user = validated_data.get('user', None) + variable = validated_data.get('variable', None) + if post: + validated_data['obj_cate'] = 'post' + validated_data['user'] = None + validated_data['variable'] = None + elif user: + validated_data['obj_cate'] = 'user' + validated_data['post'] = None + validated_data['variable'] = None + elif variable: + validated_data['obj_cate'] = 'variable' + validated_data['post'] = None + validated_data['user'] = None + else: + raise ParseError('请指定岗位或用户或变量') + return validated_data + + def create(self, validated_data): + validated_data = self.check(validated_data) + return super().create(validated_data) + + def update(self, instance, validated_data): + validated_data = self.check(validated_data) + return super().update(instance, validated_data) + class EventSerializer(serializers.ModelSerializer): area_name = serializers.CharField(source='area.name', read_only=True)