diff --git a/backend/blueprints/admin_unified.py b/backend/blueprints/admin_unified.py index bb5651106..cb9b4a090 100644 --- a/backend/blueprints/admin_unified.py +++ b/backend/blueprints/admin_unified.py @@ -22,6 +22,7 @@ import zipfile import sqlite3 import glob import time +import traceback from datetime import datetime, timedelta from flask import Blueprint, render_template, request, jsonify, redirect, url_for, flash, current_app from flask_login import login_required, current_user @@ -288,21 +289,30 @@ def guest_requests(): def advanced_settings(): """Erweiterte Systemeinstellungen""" try: + admin_logger.info(f"Erweiterte Einstellungen werden geladen von {current_user.username}") + with get_cached_session() as db_session: # Grundlegende Statistiken sammeln für das Template total_users = db_session.query(User).count() + admin_logger.debug(f"Benutzer gezählt: {total_users}") + total_printers = db_session.query(Printer).count() + admin_logger.debug(f"Drucker gezählt: {total_printers}") + total_jobs = db_session.query(Job).count() + admin_logger.debug(f"Jobs gezählt: {total_jobs}") # Aktive Drucker zählen (online/verfügbar) active_printers = db_session.query(Printer).filter( Printer.status.in_(['online', 'available', 'idle']) ).count() + admin_logger.debug(f"Aktive Drucker gezählt: {active_printers}") # Wartende Jobs zählen pending_jobs = db_session.query(Job).filter( Job.status.in_(['pending', 'scheduled', 'queued']) ).count() + admin_logger.debug(f"Wartende Jobs gezählt: {pending_jobs}") stats = { 'total_users': total_users, @@ -322,11 +332,15 @@ def advanced_settings(): 'time_window': 24 } - admin_logger.info(f"Erweiterte Einstellungen geladen von {current_user.username}") - return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings) + admin_logger.info(f"Template wird gerendert mit stats: {stats}") + return render_template('admin_advanced_settings.html', + stats=stats, + optimization_settings=optimization_settings, + active_tab='system') except Exception as e: admin_logger.error(f"Fehler beim Laden der erweiterten Einstellungen: {str(e)}") + admin_logger.error(f"Traceback: {traceback.format_exc()}") flash("Fehler beim Laden der Systemdaten", "error") # Fallback mit leeren Statistiken stats = { @@ -347,7 +361,10 @@ def advanced_settings(): 'time_window': 24 } - return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings) + return render_template('admin_advanced_settings.html', + stats=stats, + optimization_settings=optimization_settings, + active_tab='system') @admin_blueprint.route("/system-health") @admin_required @@ -1503,7 +1520,7 @@ def approve_guest_request_api(request_id): # Genehmigung durchführen guest_request.status = 'approved' guest_request.processed_at = datetime.now() - guest_request.processed_by = current_user.username + guest_request.processed_by = current_user.id # User-ID statt Username guest_request.approval_notes = approval_notes # OTP-Code automatisch generieren @@ -1546,7 +1563,7 @@ def reject_guest_request_api(request_id): # Ablehnung durchführen guest_request.status = 'rejected' guest_request.processed_at = datetime.now() - guest_request.processed_by = current_user.username + guest_request.processed_by = current_user.id # User-ID statt Username guest_request.rejection_reason = rejection_reason db_session.commit()