From c71624def002329c9bb1f1a2bee93db697b26ab0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 15 Aug 2024 11:36:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20em=20serializer=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/serializers.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/em/serializers.py b/apps/em/serializers.py index 11a4bb15..8dd7b809 100644 --- a/apps/em/serializers.py +++ b/apps/em/serializers.py @@ -4,6 +4,7 @@ from apps.system.models import Dept from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE from rest_framework import serializers from rest_framework.exceptions import ValidationError +from rest_framework.exceptions import ParseError class EcateSerializer(CustomModelSerializer): @@ -11,7 +12,16 @@ class EcateSerializer(CustomModelSerializer): model = Ecate fields = "__all__" read_only_fields = EXCLUDE_FIELDS_BASE - extra_kwargs = {"code": {"required": True}} + + def validate(self, attrs): + code = attrs.get("code", None) + if code: + ecate = Ecate.objects.get_queryset(all=True).filter(code=code).first() + if ecate and ecate.is_deleted: + ecate.is_deleted = False + ecate.save(update_fields=["is_deleted"]) + raise ParseError(f"{code}已存在并恢复") + return attrs class EquipmentSerializer(CustomModelSerializer): @@ -24,6 +34,14 @@ class EquipmentSerializer(CustomModelSerializer): full_name = serializers.SerializerMethodField() def validate(self, attrs): + number = attrs.get("number", None) + if number: + eq = Equipment.objects.get_queryset(all=True).filter(number=number).first() + if eq and eq.is_deleted: + eq.is_deleted = False + eq.save(update_fields=["is_deleted"]) + raise ParseError(f"{number}已存在并恢复") + mgroup = attrs.get("mgroup", None) if mgroup: attrs["belong_dept"] = mgroup.belong_dept