Skip to content

Commit ad7e4af

Browse files
author
jacquesbach
committed
Change /api/layout endpoint
1 parent 90b2d84 commit ad7e4af

1 file changed

Lines changed: 31 additions & 22 deletions

File tree

routes.py

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,28 +1063,37 @@ def get_layout():
10631063

10641064
@api_bp.route('/api/layout', methods=['POST'])
10651065
def save_layout():
1066-
data = request.json
1067-
layout_json = data.get('layout')
1068-
password = data.get('pw')
1069-
1070-
# Berechtigung streng prüfen
1071-
if password != ADMIN_PASS:
1072-
return jsonify({"error": "Nicht autorisiert"}), 403
1073-
1074-
conn = get_db_connection()
1075-
c = conn.cursor()
1066+
try:
1067+
data = request.get_json()
1068+
if not data:
1069+
return jsonify({"error": "Ungültiges JSON"}), 400
1070+
1071+
layout_json = data.get('layout')
1072+
password = data.get('pw')
1073+
1074+
if password != ADMIN_PASS:
1075+
return jsonify({"error": "Nicht autorisiert"}), 403
1076+
1077+
conn = get_db_connection()
1078+
c = conn.cursor()
1079+
1080+
if layout_json == "RESET":
1081+
c.execute("DELETE FROM user_settings WHERE key = 'dashboard_layout'")
1082+
print("Layout wurde zurückgesetzt.")
1083+
elif layout_json is not None:
1084+
# WICHTIG: Wir konvertieren das Objekt explizit in einen String für die DB
1085+
layout_string = json.dumps(layout_json)
1086+
c.execute("INSERT OR REPLACE INTO user_settings (key, value) VALUES (?, ?)",
1087+
('dashboard_layout', layout_string))
1088+
print("Layout erfolgreich gespeichert.")
1089+
else:
1090+
conn.close()
1091+
return jsonify({"error": "Kein Layout-Inhalt empfangen"}), 400
10761092

1077-
# Wenn das Signal "RESET" kommt, löschen wir das gespeicherte Layout
1078-
if layout_json == "RESET":
1079-
c.execute("DELETE FROM user_settings WHERE key = 'dashboard_layout'")
1080-
elif layout_json is not None:
1081-
c.execute("INSERT OR REPLACE INTO user_settings (key, value) VALUES (?, ?)",
1082-
('dashboard_layout', json.dumps(layout_json)))
1083-
else:
1093+
conn.commit()
10841094
conn.close()
1085-
return jsonify({"error": "Kein Layout gesendet"}), 400
1095+
return jsonify({"status": "gespeichert"}), 200
10861096

1087-
conn.commit()
1088-
conn.close()
1089-
1090-
return jsonify({"status": "gespeichert"}), 200
1097+
except Exception as e:
1098+
print(f"Server-Fehler: {str(e)}")
1099+
return jsonify({"error": "Interner Server Fehler", "details": str(e)}), 500

0 commit comments

Comments
 (0)