added standard-theme function

This commit is contained in:
2026-02-19 13:44:40 +01:00
parent a027cf8c1c
commit b5f0146cc4
6 changed files with 91 additions and 9 deletions
+18 -3
View File
@@ -6,7 +6,7 @@ from datetime import datetime
from flask import Blueprint, render_template, request, jsonify, redirect, url_for, current_app
from app.state import current_config
from app.utils.helpers import load_configs, load_default_sounds, load_soundboard_configs
from app.utils.helpers import load_configs, load_default_sounds, load_soundboard_configs, write_default_theme
admin_bp = Blueprint('admin', __name__)
logger = logging.getLogger(__name__)
@@ -210,8 +210,23 @@ def admin_create_theme():
}
with open(path, 'w', encoding='utf-8') as f:
json.dump(template, f, ensure_ascii=False, indent=2)
logger.info(f"Neues Theme angelegt: {os.path.relpath(path, base_dir)}")
return jsonify({"success": True, "path": os.path.relpath(path, base_dir)})
logger.info(f"Neues Theme angelegt: {os.path.relpath(path, base_dir)}")
return jsonify({"success": True, "path": os.path.relpath(path, base_dir)})
@admin_bp.route('/set_default_theme', methods=['POST'])
def admin_set_default_theme():
data = request.get_json(force=True, silent=True) or {}
filename = data.get('filename')
if not filename:
return jsonify({"success": False, "message": "filename fehlt"}), 400
try:
write_default_theme(current_app.config['DEFAULT_THEME_FILE'], filename)
logger.info(f"Default-Theme gesetzt: {filename}")
return jsonify({"success": True, "filename": filename})
except Exception as e:
logger.exception("Default-Theme setzen fehlgeschlagen")
return jsonify({"success": False, "message": str(e)}), 500
except Exception as e:
logger.exception("create_theme fehlgeschlagen")
return jsonify({"success": False, "message": str(e)}), 500
+21 -1
View File
@@ -11,7 +11,7 @@ from flask import Blueprint, jsonify, request, current_app
import app.state as state
from app.bluetooth.manager import MouldKing, advertiser, tracer
from app.utils.helpers import load_default_sounds, load_soundboard_configs, load_soundboard_config
from app.utils.helpers import load_default_sounds, load_soundboard_configs, load_soundboard_config, read_default_theme
from config import Config
logger = logging.getLogger(__name__)
@@ -451,6 +451,26 @@ def api_soundboard_load():
return jsonify({"success": False, "message": str(e)}), 500
@api_bp.route('/soundboard/load_default', methods=['POST'])
def api_soundboard_load_default():
# Lädt das Standard-Theme, falls gesetzt und noch kein Soundboard aktiv ist
try:
if state.current_soundboard:
return jsonify({"success": True, "soundboard": state.current_soundboard, "already_loaded": True})
default_file = read_default_theme(Config.DEFAULT_THEME_FILE)
if not default_file:
return jsonify({"success": False, "message": "Kein Standard-Theme gesetzt"}), 404
sb = load_soundboard_config(default_file,
current_app.config['SOUNDBOARD_CONFIG_DIR'],
current_app.config['SOUNDS_DIR'])
state.current_soundboard = sb
logger.info(f"Standard-Soundboard geladen: {default_file}")
return jsonify({"success": True, "soundboard": sb, "default_loaded": True})
except Exception as e:
logger.exception("Standard-Soundboard laden fehlgeschlagen")
return jsonify({"success": False, "message": str(e)}), 500
@api_bp.route('/soundboard/play_random', methods=['POST'])
def api_soundboard_play_random():
if state.current_soundboard is None: