Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from types import prepare_class
- from typing import List, Dict, Any
- def get_tasks_list(project_id: int = 1) -> List[Dict[str, Any]]:
- return [
- # --- Top-level tasks ---
- {"id": 10, "project_id": project_id, "name": "Setup", "status": "done", "assignee_employee_id": 201, "parent_task_id": None},
- {"id": 20, "project_id": project_id, "name": "Backend", "status": "in_progress", "assignee_employee_id": 202, "parent_task_id": None},
- {"id": 30, "project_id": project_id, "name": "Frontend", "status": "planned", "assignee_employee_id": 203, "parent_task_id": None},
- # --- Subtasks of Setup (10) ---
- {"id": 101, "project_id": project_id, "name": "Create repo", "status": "done", "assignee_employee_id": 201, "parent_task_id": 10},
- {"id": 102, "project_id": project_id, "name": "Basic CI", "status": "in_progress", "assignee_employee_id": 202, "parent_task_id": 10},
- # --- Subtasks of Backend (20) ---
- {"id": 201, "project_id": project_id, "name": "Auth endpoints","status": "in_progress","assignee_employee_id": 202, "parent_task_id": 20},
- {"id": 202, "project_id": project_id, "name": "Health check", "status": "planned", "assignee_employee_id": 203, "parent_task_id": 20},
- # --- Subtasks of Frontend (30) ---
- {"id": 301, "project_id": project_id, "name": "Login page", "status": "planned", "assignee_employee_id": 203, "parent_task_id": 201},
- {"id": 302, "project_id": project_id, "name": "Dashboard shell","status": "planned", "assignee_employee_id": 204, "parent_task_id": 201},
- ]
- tasks = get_tasks_list()
- def build_tree(task_id):
- task_tree = []
- for task in tasks:
- if (task['parent_task_id'] == task_id):
- task_tree.append({
- 'id' : task['id'],
- 'sub_tasks': build_tree(task['id'])
- })
- return task_tree
- def get_task_tree():
- task_trees = []
- for task in tasks:
- tree = build_tree(task['id'])
- task_tree = {
- 'id': task['id'],
- 'sub_tasks': tree
- }
- task_trees.append(task_tree)
- return task_trees
- # tree = build_tree(20)
- # print(tree)
- import json
- task_tree = get_task_tree()
- print(json.dumps(task_tree, indent=2))
- '''''
- Output:
- [
- {
- "id": 10,
- "sub_tasks": [
- {
- "id": 101,
- "sub_tasks": []
- },
- {
- "id": 102,
- "sub_tasks": []
- }
- ]
- },
- {
- "id": 20,
- "sub_tasks": [
- {
- "id": 201,
- "sub_tasks": [
- {
- "id": 301,
- "sub_tasks": []
- },
- {
- "id": 302,
- "sub_tasks": []
- }
- ]
- },
- {
- "id": 202,
- "sub_tasks": []
- }
- ]
- },
- {
- "id": 30,
- "sub_tasks": []
- },
- {
- "id": 101,
- "sub_tasks": []
- },
- {
- "id": 102,
- "sub_tasks": []
- },
- {
- "id": 201,
- "sub_tasks": [
- {
- "id": 301,
- "sub_tasks": []
- },
- {
- "id": 302,
- "sub_tasks": []
- }
- ]
- },
- {
- "id": 202,
- "sub_tasks": []
- },
- {
- "id": 301,
- "sub_tasks": []
- },
- {
- "id": 302,
- "sub_tasks": []
- }
- ]
- '''''
Advertisement
Add Comment
Please, Sign In to add comment