Files
Tools/backend/util/setup_routes.py
T

48 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import time
import os
from flask import Blueprint, request, render_template, redirect, jsonify, send_from_directory
from util.db_config import load_config, save_config, test_connection, is_configured
from auth.setup_admin import initialize_admin_user
from util.logger import logger
setup_blueprint = Blueprint("setup", __name__, template_folder="../backend/templates", static_folder="../backend/static")
MAX_WAIT = 30
WAIT_INTERVAL = 10
def wait_for_db():
elapsed = 0
config = load_config()
while not test_connection(config) and elapsed < MAX_WAIT:
logger.info(f"[SETUP] DB nicht erreichbar warte {WAIT_INTERVAL}s...")
time.sleep(WAIT_INTERVAL)
elapsed += WAIT_INTERVAL
return elapsed < MAX_WAIT
@setup_blueprint.route('/api/status')
def status():
if not is_configured():
return jsonify({"status": "init", "db_connected": False})
elif test_connection(load_config()):
return jsonify({"status": "ready", "db_connected": True})
else:
return jsonify({"status": "error", "db_connected": False})
@setup_blueprint.route('/setup', methods=['GET', 'POST'])
def setup():
if request.method == 'POST':
db_config = {
"host": request.form['host'],
"port": int(request.form['port']),
"user": request.form['user'],
"password": request.form['password'],
"database": request.form['database']
}
save_config(db_config)
if test_connection(db_config):
initialize_admin_user(db_config)
return redirect('/')
else:
return "Verbindung fehlgeschlagen. Bitte zurück und prüfen.", 500
return render_template('setup.html')