80 lines
2.7 KiB
Python

# app/routes/main.py
import os
import logging
from flask import Blueprint, render_template, redirect, url_for, request, jsonify, send_from_directory, current_app
from app.utils.helpers import load_configs, load_default_sounds
from app.state import current_config, reset_state
from config import Config
main_bp = Blueprint('main', __name__)
logger = logging.getLogger(__name__)
@main_bp.route('/')
def index():
configs = load_configs()
return render_template('index.html', configs=configs)
"""
@app.route('/')
def index():
return render_template('index.html', configs=load_configs())
"""
@main_bp.route('/configs/<path:filename>')
def serve_config_file(filename):
return send_from_directory(current_app.config['CONFIG_DIR'], filename)
@main_bp.route('/load_config/<filename>')
def load_config(filename):
global current_config
path = os.path.join(app.config['CONFIG_DIR'], filename)
if not os.path.exists(path):
logger.error(f"Config nicht gefunden: {path}")
return "Konfiguration nicht gefunden", 404
try:
with open(path, 'r', encoding='utf-8') as f:
current_config = json.load(f)
current_config['filename'] = filename
logger.info(f"Config erfolgreich geladen: {filename} mit {len(current_config.get('channels', []))} Kanälen")
return redirect(url_for('main.control_page'))
except json.JSONDecodeError as e:
logger.error(f"Ungültiges JSON in {filename}: {e}")
return "Ungültiges JSON-Format in der Konfigurationsdatei", 500
except Exception as e:
logger.error(f"Ladefehler {filename}: {e}")
return "Fehler beim Laden der Konfiguration", 500
@main_bp.route('/control')
def control_page():
if current_config is None:
logger.warning("current_config ist None → Redirect zu index")
return redirect(url_for('main.index'))
# Globale Sounds immer laden
global_sounds = load_default_sounds()
logger.info(f"Steuerseite geladen für Config: {current_config.get('filename', 'unbekannt')} mit {len(current_config.get('channels', []))} Kanälen")
logger.info(f"Übergebe config an Template: {current_config}")
print("DEBUG: config hat channels?", 'channels' in current_config, len(current_config.get('channels', [])))
return render_template('control.html', config=current_config, global_sounds=global_sounds)
@main_bp.route('/soundboard')
def soundboard():
if current_config is None or 'sounds' not in current_config:
return redirect(url_for('main.index'))
sounds = current_config.get('sounds', [])
return render_template('soundboard.html', sounds=sounds, config=current_config)
pass