🎉 Improved Backend Structure & Documentation 🖥️📚
This commit is contained in:
110
backend/app.py
110
backend/app.py
@@ -1828,16 +1828,19 @@ def einstellungen_redirect():
|
||||
"""Leitet zur neuen Einstellungsseite im User-Blueprint weiter (deutsche URL)."""
|
||||
return redirect(url_for("user_settings"))
|
||||
|
||||
@app.route("/admin")
|
||||
@app.route("/admin-dashboard")
|
||||
@login_required
|
||||
def admin():
|
||||
if not current_user.is_admin:
|
||||
flash("Nur Administratoren haben Zugriff auf diesen Bereich.", "error")
|
||||
return redirect(url_for("index"))
|
||||
|
||||
@admin_required
|
||||
def admin_page():
|
||||
"""Admin-Dashboard-Seite mit Live-Funktionen"""
|
||||
# Daten für das Template sammeln (gleiche Logik wie admin-dashboard)
|
||||
db_session = get_db_session()
|
||||
try:
|
||||
# Erfolgsrate berechnen
|
||||
completed_jobs = db_session.query(Job).filter(Job.status == 'completed').count() if db_session else 0
|
||||
total_jobs = db_session.query(Job).count() if db_session else 0
|
||||
success_rate = round((completed_jobs / total_jobs * 100), 1) if total_jobs > 0 else 0
|
||||
|
||||
# Statistiken sammeln
|
||||
stats = {
|
||||
'total_users': db_session.query(User).count(),
|
||||
@@ -1845,7 +1848,56 @@ def admin():
|
||||
'online_printers': db_session.query(Printer).filter(Printer.status == 'online').count(),
|
||||
'active_jobs': db_session.query(Job).filter(Job.status.in_(['running', 'queued'])).count(),
|
||||
'queued_jobs': db_session.query(Job).filter(Job.status == 'queued').count(),
|
||||
'success_rate': calculate_success_rate(db_session) # Berechnung der tatsächlichen Erfolgsrate
|
||||
'success_rate': success_rate
|
||||
}
|
||||
|
||||
# Tab-Parameter
|
||||
active_tab = request.args.get('tab', 'users')
|
||||
|
||||
# Benutzer laden (für users tab)
|
||||
users = []
|
||||
if active_tab == 'users':
|
||||
users = db_session.query(User).all()
|
||||
|
||||
# Drucker laden (für printers tab)
|
||||
printers = []
|
||||
if active_tab == 'printers':
|
||||
printers = db_session.query(Printer).all()
|
||||
|
||||
db_session.close()
|
||||
|
||||
return render_template("admin.html",
|
||||
stats=stats,
|
||||
active_tab=active_tab,
|
||||
users=users,
|
||||
printers=printers)
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler beim Laden der Admin-Daten: {str(e)}")
|
||||
db_session.close()
|
||||
flash("Fehler beim Laden des Admin-Bereichs.", "error")
|
||||
return redirect(url_for("index"))
|
||||
|
||||
@app.route("/admin")
|
||||
@login_required
|
||||
@admin_required
|
||||
def admin():
|
||||
"""Admin-Dashboard-Seite mit Live-Funktionen"""
|
||||
# Daten für das Template sammeln (gleiche Logik wie admin-dashboard)
|
||||
db_session = get_db_session()
|
||||
try:
|
||||
# Erfolgsrate berechnen
|
||||
completed_jobs = db_session.query(Job).filter(Job.status == 'completed').count() if db_session else 0
|
||||
total_jobs = db_session.query(Job).count() if db_session else 0
|
||||
success_rate = round((completed_jobs / total_jobs * 100), 1) if total_jobs > 0 else 0
|
||||
|
||||
# Statistiken sammeln
|
||||
stats = {
|
||||
'total_users': db_session.query(User).count(),
|
||||
'total_printers': db_session.query(Printer).count(),
|
||||
'online_printers': db_session.query(Printer).filter(Printer.status == 'online').count(),
|
||||
'active_jobs': db_session.query(Job).filter(Job.status.in_(['running', 'queued'])).count(),
|
||||
'queued_jobs': db_session.query(Job).filter(Job.status == 'queued').count(),
|
||||
'success_rate': success_rate
|
||||
}
|
||||
|
||||
# Tab-Parameter
|
||||
@@ -1914,50 +1966,6 @@ def stats_page():
|
||||
"""Zeigt die Statistiken-Seite an"""
|
||||
return render_template("stats.html", title="Statistiken")
|
||||
|
||||
@app.route("/admin-dashboard")
|
||||
@login_required
|
||||
@admin_required
|
||||
def admin_page():
|
||||
"""Erweiterte Admin-Dashboard-Seite mit Live-Funktionen"""
|
||||
# Daten für das Template sammeln
|
||||
db_session = get_db_session()
|
||||
try:
|
||||
# Statistiken sammeln
|
||||
stats = {
|
||||
'total_users': db_session.query(User).count(),
|
||||
'total_printers': db_session.query(Printer).count(),
|
||||
'online_printers': db_session.query(Printer).filter(Printer.status == 'online').count(),
|
||||
'active_jobs': db_session.query(Job).filter(Job.status.in_(['running', 'queued'])).count(),
|
||||
'queued_jobs': db_session.query(Job).filter(Job.status == 'queued').count(),
|
||||
'success_rate': calculate_success_rate(db_session) # Berechnung der tatsächlichen Erfolgsrate
|
||||
}
|
||||
|
||||
# Tab-Parameter
|
||||
active_tab = request.args.get('tab', 'users')
|
||||
|
||||
# Benutzer laden (für users tab)
|
||||
users = []
|
||||
if active_tab == 'users':
|
||||
users = db_session.query(User).all()
|
||||
|
||||
# Drucker laden (für printers tab)
|
||||
printers = []
|
||||
if active_tab == 'printers':
|
||||
printers = db_session.query(Printer).all()
|
||||
|
||||
db_session.close()
|
||||
|
||||
return render_template("admin.html",
|
||||
title="Admin Dashboard",
|
||||
stats=stats,
|
||||
active_tab=active_tab,
|
||||
users=users,
|
||||
printers=printers)
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler beim Laden der Admin-Dashboard-Daten: {str(e)}")
|
||||
db_session.close()
|
||||
flash("Fehler beim Laden des Admin-Dashboards.", "error")
|
||||
return redirect(url_for("index"))
|
||||
|
||||
# ===== RECHTLICHE SEITEN =====
|
||||
|
||||
|
Reference in New Issue
Block a user