@@ -1063,28 +1063,37 @@ def get_layout():
10631063
10641064@api_bp .route ('/api/layout' , methods = ['POST' ])
10651065def 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