From cb46d9bfc633bbb93457f93f2de40e7b28f5b6e9 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 15 Aug 2024 11:17:48 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20ecate=20code=20=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/serializers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/em/serializers.py b/apps/em/serializers.py index dd6c88ec..11a4bb15 100644 --- a/apps/em/serializers.py +++ b/apps/em/serializers.py @@ -11,6 +11,7 @@ class EcateSerializer(CustomModelSerializer): model = Ecate fields = "__all__" read_only_fields = EXCLUDE_FIELDS_BASE + extra_kwargs = {"code": {"required": True}} class EquipmentSerializer(CustomModelSerializer): From c71624def002329c9bb1f1a2bee93db697b26ab0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 15 Aug 2024 11:36:38 +0800 Subject: [PATCH 2/4] =?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 From 0aa0b051e9cb4323038c2c412b023534444ef7e6 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 15 Aug 2024 15:53:17 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20em=20ecate=20serializer=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/serializers.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/apps/em/serializers.py b/apps/em/serializers.py index 8dd7b809..0278349a 100644 --- a/apps/em/serializers.py +++ b/apps/em/serializers.py @@ -12,16 +12,6 @@ class EcateSerializer(CustomModelSerializer): model = Ecate fields = "__all__" read_only_fields = EXCLUDE_FIELDS_BASE - - 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): From c8db1ad29b523e422df66ad1c2a55c70f940328d Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 15 Aug 2024 15:53:42 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20base=20handle=5Fparent=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/models.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/utils/models.py b/apps/utils/models.py index 2e5e6bad..3a18d461 100755 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -6,6 +6,7 @@ from django.db.models.query import QuerySet from apps.utils.snowflake import idWorker from django.db import IntegrityError from django.db import transaction +from rest_framework.exceptions import ParseError # 自定义软删除查询基类 @@ -63,18 +64,18 @@ class ParentModel(models.Model): link = [] if self.parent is not None: if self.parent == self: - raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用') + raise ParseError(f'{self.__class__.__name__}-{self.id}-存在循环引用') link = [self.parent.id] # 一级 if self.parent.parent is not None: # 二级 if self.parent.parent == self: - raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用') + raise ParseError(f'{self.__class__.__name__}-{self.id}-存在循环引用') link.insert(0, self.parent.parent.id) if self.parent.parent.parent is not None: # 三级 if self.parent.parent.parent == self: - raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用') + raise ParseError(f'{self.__class__.__name__}-{self.id}-存在循环引用') link.insert(0, self.parent.parent.parent.id) if self.parent.parent.parent.parent is not None: - raise Exception(f'{self.__class__.__name__}-{self.id}-最多支持四级') + raise ParseError(f'{self.__class__.__name__}-{self.id}-最多支持四级') return link def handle_parent(self):