🔧 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:
@ -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()
|
||||
|
Reference in New Issue
Block a user