diff --git a/apps/em/serializers.py b/apps/em/serializers.py index dd6c88ec..0278349a 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): @@ -23,6 +24,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 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):