🔧 Fix: Admin Advanced Settings 500 Error behoben

- Debug-Logging für erweiterte Einstellungen hinzugefügt
- active_tab Parameter in Exception-Handler ergänzt
- Traceback-Import für bessere Fehlerdiagnose
- Ausführliches Logging für Datenbankoperationen
- Konsistente Template-Parameter in allen Code-Pfaden

Fixes HTTP 500 Error bei GET /admin/advanced-settings

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-06-19 23:26:14 +02:00
parent 1908f203d1
commit db88620d0c

View File

@ -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()