(source, parent_id, workspace_id, current_depth=0)
| 77 | |
| 78 | |
| 79 | def check_depth(source, parent_id, workspace_id, current_depth=0): |
| 80 | # Folder 不能超过3层 |
| 81 | Folder = get_folder_type(source) # noqa |
| 82 | |
| 83 | if parent_id != workspace_id: |
| 84 | # 计算当前层级 |
| 85 | depth = 1 # 当前要创建的节点算一层 |
| 86 | current_parent_id = parent_id |
| 87 | |
| 88 | # 向上追溯父节点 |
| 89 | while current_parent_id != workspace_id: |
| 90 | depth += 1 |
| 91 | parent_node = QuerySet(Folder).filter(id=current_parent_id).first() |
| 92 | if parent_node is None: |
| 93 | break |
| 94 | current_parent_id = parent_node.parent_id |
| 95 | |
| 96 | # 验证层级深度 |
| 97 | if depth + current_depth > FOLDER_DEPTH: |
| 98 | raise serializers.ValidationError(_('Folder depth cannot exceed 10000 levels')) |
| 99 | |
| 100 | |
| 101 | def get_max_depth(current_node): |
no test coverage detected