(self, task_id: int, status: str = None,
add_blocked_by: list = None, remove_blocked_by: list = None)
| 77 | return json.dumps(self._load(task_id), indent=2, ensure_ascii=False) |
| 78 | |
| 79 | def update(self, task_id: int, status: str = None, |
| 80 | add_blocked_by: list = None, remove_blocked_by: list = None) -> str: |
| 81 | task = self._load(task_id) |
| 82 | if status: |
| 83 | if status not in ("pending", "in_progress", "completed"): |
| 84 | raise ValueError(f"Invalid status: {status}") |
| 85 | task["status"] = status |
| 86 | if status == "completed": |
| 87 | self._clear_dependency(task_id) |
| 88 | if add_blocked_by: |
| 89 | task["blockedBy"] = list(set(task["blockedBy"] + add_blocked_by)) |
| 90 | if remove_blocked_by: |
| 91 | task["blockedBy"] = [x for x in task["blockedBy"] if x not in remove_blocked_by] |
| 92 | self._save(task) |
| 93 | return json.dumps(task, indent=2, ensure_ascii=False) |
| 94 | |
| 95 | def _clear_dependency(self, completed_id: int): |
| 96 | """Remove completed_id from all other tasks' blockedBy lists.""" |
no test coverage detected