diff --git a/srv/poe_manager/app.py b/srv/poe_manager/app.py index 9702dc7..d73143c 100644 --- a/srv/poe_manager/app.py +++ b/srv/poe_manager/app.py @@ -105,26 +105,40 @@ def index(): return render_template("index.html", devices=devices, status=status_dict) -@app.route('/settings', methods=['GET', 'POST']) +@app.route("/settings", methods=["GET", "POST"]) @login_required def settings(): if not current_user.is_admin: - flash("Zugriff verweigert!") - return redirect(url_for('index')) - - conn = get_db_connection() - interval_row = conn.execute("SELECT value FROM settings WHERE key='check_interval'").fetchone() - interval_min = int(interval_row['value']) // 60 if interval_row else 5 # Standard 5 Minuten - - if request.method == 'POST': - new_interval_min = int(request.form['interval']) - conn.execute("INSERT OR REPLACE INTO settings (key, value) VALUES ('check_interval', ?)", (new_interval_min*60,)) - conn.commit() - flash(f"Intervall auf {new_interval_min} Minuten gesetzt.") - interval_min = new_interval_min + flash("Nur Admins dürfen die Einstellungen ändern!") + return redirect(url_for("index")) + # Aktuellen Prüfintervall laden + conn = sqlite3.connect("sqlite.db") + c = conn.cursor() + c.execute("SELECT value FROM settings WHERE key='interval'") + row = c.fetchone() + interval = int(row[0]) if row else 5 # Default 5 Minuten conn.close() - return render_template('settings.html', interval=interval_min) + + if request.method == "POST": + new_interval = int(request.form["interval"]) + conn = sqlite3.connect("sqlite.db") + c = conn.cursor() + # upsert + c.execute("INSERT INTO settings (key, value) VALUES (?, ?) " + "ON CONFLICT(key) DO UPDATE SET value=excluded.value", + ("interval", new_interval)) + conn.commit() + conn.close() + + # rpi-check.service neu starten + import subprocess + subprocess.run(["systemctl", "restart", "rpi-check.service"]) + + flash(f"Intervall auf {new_interval} Minuten gesetzt und Service neu gestartet!") + return redirect(url_for("settings")) + + return render_template("settings.html", interval=interval) @app.route('/devices', methods=['GET', 'POST']) @login_required diff --git a/srv/poe_manager/templates/settings.html b/srv/poe_manager/templates/settings.html index e57f1c6..5e80300 100644 --- a/srv/poe_manager/templates/settings.html +++ b/srv/poe_manager/templates/settings.html @@ -3,6 +3,16 @@