From 29770503bf180a2f7b605f73158833eca56895c1 Mon Sep 17 00:00:00 2001 From: Lars Date: Mon, 23 Mar 2026 09:13:50 +0100 Subject: [PATCH] fix: wrap abilities dict with Json() for JSONB insert (#13) Problem: Creating new training types via Admin UI resulted in 'Internal Server Error' because abilities dict was passed directly to PostgreSQL JSONB column without Json() wrapper. Solution: - Import Json from psycopg2.extras - Wrap abilities_json with Json() in INSERT - Wrap data.abilities with Json() in UPDATE Same issue as rest_days JSONB fix (commit 7d627cf). Closes #13 --- backend/routers/admin_training_types.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/routers/admin_training_types.py b/backend/routers/admin_training_types.py index f26db55..49899ed 100644 --- a/backend/routers/admin_training_types.py +++ b/backend/routers/admin_training_types.py @@ -7,6 +7,7 @@ import logging from typing import Optional from fastapi import APIRouter, HTTPException, Depends from pydantic import BaseModel +from psycopg2.extras import Json from db import get_db, get_cursor, r2d from auth import require_auth, require_admin @@ -103,7 +104,7 @@ def create_training_type(data: TrainingTypeCreate, session: dict = Depends(requi data.description_de, data.description_en, data.sort_order, - abilities_json + Json(abilities_json) )) new_id = cur.fetchone()['id'] @@ -153,7 +154,7 @@ def update_training_type( values.append(data.sort_order) if data.abilities is not None: updates.append("abilities = %s") - values.append(data.abilities) + values.append(Json(data.abilities)) if not updates: raise HTTPException(400, "No fields to update")