Files
cdtestplant_v1/apps/project/controllers/treeOperation.py
2025-04-29 18:09:00 +08:00

28 lines
1.2 KiB
Python

from ninja_extra import api_controller, ControllerBase, route
from ninja_jwt.authentication import JWTAuth
from ninja_extra.permissions import IsAuthenticated
from django.db import transaction
from django.shortcuts import get_object_or_404
# 导入schema
from apps.project.schemas.treeOperation import CopySchema
# 导入模型
from apps.project.models import Project
# 导入本app工具
from apps.project.tools.keyTools import TreeKey
# 导入项目工具
from utils.chen_response import ChenResponse
@api_controller("/treeOperation", auth=JWTAuth(), permissions=[IsAuthenticated], tags=['树的操作'])
class TreeController(ControllerBase):
@route.post("/copy", url_name="tree-copy")
@transaction.atomic
def tree_copy(self, data: CopySchema):
"""新建下一个轮次,并复制选中的节点"""
project_obj = get_object_or_404(Project, id=data.pid)
round_count = project_obj.pField.count()
tree_keys = data.data
# 逻辑是:如果大节点有值,则复制整个大节点而不关心其子节点
key_tree = TreeKey(tree_keys)
key_tree.copy_tree(round_count, project_obj)
return ChenResponse(code=200, status=200, message='生成轮次成功')