fix: correct remaining dict cursor access (row[0] → row['id'])
Some checks failed
Deploy Development / deploy (push) Successful in 35s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m57s

Error: 100 exercises failed with error '0' (TypeError suppressed)
Root cause: More row[0] dict access in catalog assignment functions

Previous fix only covered fetchone()[0] in RETURNING clauses.
Missed 6 more locations in SELECT queries where row is dict-like.

Fixed locations:
- Line 511: focus_area_id in exercise_focus_areas INSERT
- Line 524: style_direction_id in exercise_training_styles INSERT
- Line 535: target_group_id in exercise_target_groups INSERT
- Line 546: skill_id in exercise_skills INSERT
- Line 568: skill_id in exercise_skills INSERT (with levels)
- Line 589: category_id assignment in _upsert_skill

All changed from row[0] to row['id'] for RealDictCursor compatibility.

This should fix the remaining 100 import failures.
This commit is contained in:
Lars 2026-04-27 08:24:35 +02:00
parent bcc7d61d07
commit 1a0708f152

View File

@ -508,7 +508,7 @@ def _assign_exercise_catalogs(cur, conn, exercise_id: int, mapped: dict):
"""INSERT INTO exercise_focus_areas (exercise_id, focus_area_id, is_primary)
VALUES (%s, %s, %s)
ON CONFLICT (exercise_id, focus_area_id) DO NOTHING""",
(exercise_id, row[0], idx == 0)
(exercise_id, row['id'], idx == 0)
)
else:
logger.warning("Focus Area '%s' nicht im Katalog gefunden", name)
@ -521,7 +521,7 @@ def _assign_exercise_catalogs(cur, conn, exercise_id: int, mapped: dict):
cur.execute(
"""INSERT INTO exercise_training_styles (exercise_id, style_direction_id)
VALUES (%s, %s) ON CONFLICT DO NOTHING""",
(exercise_id, row[0])
(exercise_id, row['id'])
)
# Target Groups
@ -532,7 +532,7 @@ def _assign_exercise_catalogs(cur, conn, exercise_id: int, mapped: dict):
cur.execute(
"""INSERT INTO exercise_target_groups (exercise_id, target_group_id)
VALUES (%s, %s) ON CONFLICT DO NOTHING""",
(exercise_id, row[0])
(exercise_id, row['id'])
)
# Skills
@ -543,7 +543,7 @@ def _assign_exercise_catalogs(cur, conn, exercise_id: int, mapped: dict):
cur.execute(
"""INSERT INTO exercise_skills (exercise_id, skill_id)
VALUES (%s, %s) ON CONFLICT DO NOTHING""",
(exercise_id, row[0])
(exercise_id, row['id'])
)
conn.commit()
@ -565,7 +565,7 @@ def _assign_exercise_skills(cur, conn, exercise_id: int, skill_assignments: list
target_level = EXCLUDED.target_level,
is_primary = EXCLUDED.is_primary""",
(
exercise_id, row[0],
exercise_id, row['id'],
assignment.get("target_level"),
assignment.get("required_level"),
assignment.get("intensity"),
@ -586,7 +586,7 @@ def _upsert_skill(mapped: dict, reimport: bool) -> Optional[int]:
cur.execute("SELECT id FROM skill_categories WHERE name ILIKE %s", (mapped["category_name"],))
row = cur.fetchone()
if row:
category_id = row[0]
category_id = row['id']
cur.execute(
"""INSERT INTO skills (name, description, category_id)