initial commit
This commit is contained in:
27
apps/project/controllers/treeOperation.py
Normal file
27
apps/project/controllers/treeOperation.py
Normal file
@@ -0,0 +1,27 @@
|
||||
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='生成轮次成功')
|
||||
Reference in New Issue
Block a user