Die Dateien wurden geändert oder hinzugefügt:
This commit is contained in:
@@ -691,6 +691,16 @@ def inject_now():
|
||||
"""Injiziert die aktuelle Zeit in alle Templates"""
|
||||
return {'now': datetime.now}
|
||||
|
||||
@app.context_processor
|
||||
def inject_current_route():
|
||||
"""
|
||||
Stellt current_route für alle Templates bereit.
|
||||
|
||||
Verhindert Template-Fehler wenn request.endpoint None ist (z.B. bei 404-Fehlern).
|
||||
"""
|
||||
current_route = getattr(request, 'endpoint', None) or ''
|
||||
return {'current_route': current_route}
|
||||
|
||||
@app.template_filter('format_datetime')
|
||||
def format_datetime_filter(value, format='%d.%m.%Y %H:%M'):
|
||||
"""Template-Filter für Datums-Formatierung"""
|
||||
@@ -1093,7 +1103,8 @@ def api_stats():
|
||||
try:
|
||||
from models import get_db_session, User, Printer, Job
|
||||
|
||||
with get_cached_session() as db_session:
|
||||
db_session = get_db_session()
|
||||
try:
|
||||
# Grundlegende Counts
|
||||
total_users = db_session.query(User).count()
|
||||
total_printers = db_session.query(Printer).count()
|
||||
@@ -1116,6 +1127,8 @@ def api_stats():
|
||||
online_printers = db_session.query(Printer).filter(
|
||||
Printer.active == True
|
||||
).count()
|
||||
finally:
|
||||
db_session.close()
|
||||
|
||||
stats = {
|
||||
'total_users': total_users,
|
||||
@@ -1199,7 +1212,13 @@ def forbidden_error(error):
|
||||
"message": "Sie haben keine Berechtigung für diese Aktion",
|
||||
"status_code": 403
|
||||
}), 403
|
||||
return render_template('errors/403.html'), 403
|
||||
|
||||
try:
|
||||
return render_template('errors/403.html'), 403
|
||||
except Exception as template_error:
|
||||
# Fallback bei Template-Fehlern
|
||||
app_logger.error(f"Template-Fehler in 403-Handler: {str(template_error)}")
|
||||
return f"<h1>403 - Zugriff verweigert</h1><p>Sie haben keine Berechtigung für diese Aktion.</p>", 403
|
||||
|
||||
@app.errorhandler(404)
|
||||
def not_found_error(error):
|
||||
@@ -1211,7 +1230,13 @@ def not_found_error(error):
|
||||
"message": "Die angeforderte Ressource wurde nicht gefunden",
|
||||
"status_code": 404
|
||||
}), 404
|
||||
return render_template('errors/404.html'), 404
|
||||
|
||||
try:
|
||||
return render_template('errors/404.html'), 404
|
||||
except Exception as template_error:
|
||||
# Fallback bei Template-Fehlern
|
||||
app_logger.error(f"Template-Fehler in 404-Handler: {str(template_error)}")
|
||||
return f"<h1>404 - Nicht gefunden</h1><p>Die angeforderte Seite wurde nicht gefunden.</p>", 404
|
||||
|
||||
@app.errorhandler(405)
|
||||
def method_not_allowed_error(error):
|
||||
@@ -1271,7 +1296,12 @@ def internal_error(error):
|
||||
"status_code": 500
|
||||
}), 500
|
||||
|
||||
return render_template('errors/500.html', error_id=error_id), 500
|
||||
try:
|
||||
return render_template('errors/500.html', error_id=error_id), 500
|
||||
except Exception as template_error:
|
||||
# Fallback bei Template-Fehlern
|
||||
app_logger.error(f"Template-Fehler in 500-Handler: {str(template_error)}")
|
||||
return f"<h1>500 - Interner Serverfehler</h1><p>Ein unerwarteter Fehler ist aufgetreten. Fehler-ID: {error_id}</p>", 500
|
||||
|
||||
@app.errorhandler(502)
|
||||
def bad_gateway_error(error):
|
||||
@@ -1338,7 +1368,12 @@ def handle_exception(error):
|
||||
"status_code": 500
|
||||
}), 500
|
||||
|
||||
return render_template('errors/500.html', error_id=error_id), 500
|
||||
try:
|
||||
return render_template('errors/500.html', error_id=error_id), 500
|
||||
except Exception as template_error:
|
||||
# Fallback bei Template-Fehlern
|
||||
app_logger.error(f"Template-Fehler im Exception-Handler: {str(template_error)}")
|
||||
return f"<h1>500 - Unerwarteter Fehler</h1><p>Ein unerwarteter Fehler ist aufgetreten. Fehler-ID: {error_id}</p>", 500
|
||||
|
||||
# ===== HAUPTFUNKTION =====
|
||||
def main():
|
||||
@@ -1506,5 +1541,17 @@ def production_info():
|
||||
"""Stellt Production-Informationen für Templates bereit"""
|
||||
return get_production_info()
|
||||
|
||||
# Nach der Initialisierung der Blueprints und vor dem App-Start
|
||||
try:
|
||||
# Admin-Berechtigungen beim Start korrigieren
|
||||
from utils.permissions import fix_all_admin_permissions
|
||||
result = fix_all_admin_permissions()
|
||||
if result['success']:
|
||||
app_logger.info(f"Admin-Berechtigungen beim Start korrigiert: {result['created']} erstellt, {result['corrected']} aktualisiert")
|
||||
else:
|
||||
app_logger.warning(f"Fehler beim Korrigieren der Admin-Berechtigungen: {result.get('error', 'Unbekannter Fehler')}")
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler beim Korrigieren der Admin-Berechtigungen beim Start: {str(e)}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user