This commit is contained in:
zty 2024-08-16 18:44:02 +08:00
commit a09343322e
2 changed files with 14 additions and 4 deletions

View File

@ -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

View File

@ -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):