Fix: Task-Roll-up mit RealDictCursor kompatibel.
All checks were successful
Deploy Development / deploy (push) Successful in 42s
Test Suite / pytest-backend (push) Successful in 1m58s
Test Suite / lint-backend (push) Successful in 2s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 18s
Test Suite / playwright-smoke (push) Successful in 14s

rollup_parent_status nutzte Index-Zugriff row[0]; pytest test_nested_tasks_and_rollup schlug fehl.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Lars 2026-07-10 06:31:41 +02:00
parent ba28a86fe5
commit 3e96b9c1e9

View File

@ -180,7 +180,9 @@ def _rollup_parent_status(cur, *, tenant_id: str, parent_task_id: str) -> None:
""", """,
(tenant_id, parent_task_id), (tenant_id, parent_task_id),
) )
child_statuses = [row[0] for row in cur.fetchall()] child_statuses = [
row["status"] if isinstance(row, dict) else row[0] for row in cur.fetchall()
]
if not child_statuses: if not child_statuses:
return return
if any(status not in TERMINAL_TASK_STATUSES for status in child_statuses): if any(status not in TERMINAL_TASK_STATUSES for status in child_statuses):
@ -196,8 +198,11 @@ def _rollup_parent_status(cur, *, tenant_id: str, parent_task_id: str) -> None:
(parent_task_id, tenant_id), (parent_task_id, tenant_id),
) )
row = cur.fetchone() row = cur.fetchone()
if row and row[0]: if not row:
_rollup_parent_status(cur, tenant_id=tenant_id, parent_task_id=str(row[0])) return
next_parent = row["parent_task_id"] if isinstance(row, dict) else row[0]
if next_parent:
_rollup_parent_status(cur, tenant_id=tenant_id, parent_task_id=str(next_parent))
def create_task( def create_task(