📝 "Refactor backend files

This commit is contained in:
Till Tomczak 2025-06-01 01:31:02 +02:00
parent 40ca104860
commit 66621f1539
16 changed files with 881 additions and 43 deletions

View File

@ -1984,9 +1984,8 @@ def create_user_api():
new_user = User( new_user = User(
username=data["username"], username=data["username"],
email=data["email"], email=data["email"],
first_name=data.get("first_name", ""), name=data.get("name", ""),
last_name=data.get("last_name", ""), role="admin" if data.get("is_admin", False) else "user",
is_admin=data.get("is_admin", False),
created_at=datetime.now() created_at=datetime.now()
) )
@ -2000,8 +1999,8 @@ def create_user_api():
"id": new_user.id, "id": new_user.id,
"username": new_user.username, "username": new_user.username,
"email": new_user.email, "email": new_user.email,
"first_name": new_user.first_name, "name": new_user.name,
"last_name": new_user.last_name, "role": new_user.role,
"is_admin": new_user.is_admin, "is_admin": new_user.is_admin,
"created_at": new_user.created_at.isoformat() "created_at": new_user.created_at.isoformat()
} }
@ -2326,9 +2325,8 @@ def admin_create_user_form():
new_user = User( new_user = User(
username=username, username=username,
email=email, email=email,
first_name=name.split(' ')[0] if name else "", name=name,
last_name=" ".join(name.split(' ')[1:]) if name and ' ' in name else "", role=role,
is_admin=(role == "admin"),
created_at=datetime.now() created_at=datetime.now()
) )

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@

View File

@ -79245,3 +79245,434 @@ WHERE users.id = ?
2025-06-01 01:16:28 - myp.app - INFO - Admin-Check für Funktion admin_add_user_page: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 01:16:28 - myp.app - INFO - Admin-Check für Funktion admin_add_user_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:16:28 - myp.app - INFO - Admin-Benutzer-Hinzufügen-Seite aufgerufen von User 1 2025-06-01 01:16:28 - myp.app - INFO - Admin-Benutzer-Hinzufügen-Seite aufgerufen von User 1
2025-06-01 01:16:28 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:16:28] "GET /admin/users/add HTTP/1.1" 200 - 2025-06-01 01:16:28 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:16:28] "GET /admin/users/add HTTP/1.1" 200 -
2025-06-01 01:19:10 - myp.app - INFO - Admin-Check für Funktion admin_add_user_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:19:10 - myp.app - INFO - Admin-Benutzer-Hinzufügen-Seite aufgerufen von User 1
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /admin/users/add HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/ui-components.js HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/optimization-features.js HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/debug-fix.js HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/global-refresh-functions.js HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:10 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:10 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:10 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:10 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:10 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:10] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:11] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /admin-dashboard?tab=users HTTP/1.1" 200 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/admin.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/admin-system.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/admin-live.js HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/js/admin-dashboard.js HTTP/1.1" 200 -
2025-06-01 01:19:15 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:15 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:15 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:15 - myp.app - INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:19:15 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 01:19:15 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:15] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:16 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:16] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:19:25 - myp.app - INFO - Admin-Check für Funktion api_admin_stats_live: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:19:26 - myp.app - WARNING - System-Performance-Metriken nicht verfügbar: argument 1 (impossible<bad format char>)
2025-06-01 01:19:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:26] "GET /api/admin/stats/live HTTP/1.1" 200 -
2025-06-01 01:19:35 - myp.app - INFO - Admin-Check für Funktion api_admin_stats_live: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:19:36 - myp.app - WARNING - System-Performance-Metriken nicht verfügbar: argument 1 (impossible<bad format char>)
2025-06-01 01:19:36 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:36] "GET /api/admin/stats/live HTTP/1.1" 200 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /calendar HTTP/1.1" 200 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/fullcalendar/main.min.css HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/fullcalendar/core.min.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/fullcalendar/timegrid.min.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/fullcalendar/daygrid.min.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/fullcalendar/interaction.min.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/fullcalendar/list.min.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:38 - myp.calendar - INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /api/calendar/events?start=2025-06-01T00:00:00%2B02:00&end=2025-06-08T00:00:00%2B02:00 HTTP/1.1" 200 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:38 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:38] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /stats HTTP/1.1" 200 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /jobs HTTP/1.1" 200 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:39] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:40] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:40] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:40] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:40] "GET /api/jobs HTTP/1.1" 200 -
2025-06-01 01:19:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:40] "GET /api/printers HTTP/1.1" 200 -
2025-06-01 01:19:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:40] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:40] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /printers HTTP/1.1" 200 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /api/printers HTTP/1.1" 200 -
2025-06-01 01:19:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /api/printers/monitor/live-status?use_cache=false HTTP/1.1" 200 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /api/printers HTTP/1.1" 200 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:41] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:42] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /admin-dashboard HTTP/1.1" 200 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/admin.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/admin-system.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/admin-live.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/admin-dashboard.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:44 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:44 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:44 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:44 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:44 - myp.app - INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:19:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:44] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /requests/overview HTTP/1.1" 200 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:45] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:46 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:46] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /request HTTP/1.1" 200 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:47 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:47] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:48] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /dashboard HTTP/1.1" 200 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:19:50 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:50 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:19:50 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:19:50 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:19:50 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:50] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:19:51 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:19:51] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:20:20 - myp.app - INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 01:20:20 - myp.app - INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 01:20:20 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:20 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:20] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:20:20 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:20 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:20 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:20 - myp.app - INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
2025-06-01 01:20:20 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:20] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:20:20 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:20] "POST /api/dashboard/refresh HTTP/1.1" 200 -
2025-06-01 01:20:20 - myp.app - INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
2025-06-01 01:20:20 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:20] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:20:20 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:20] "POST /api/dashboard/refresh HTTP/1.1" 200 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /dashboard HTTP/1.1" 200 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:20:21 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:21] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:20:22 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:20:22 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:20:22 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:22 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /static/favicon.svg HTTP/1.1" 304 -
2025-06-01 01:20:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:22] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:20:23 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:23] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:20:52 - myp.app - INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 01:20:52 - myp.app - INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 01:20:52 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:52 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:52 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:52] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:20:52 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:52] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:20:52 - myp.app - INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
2025-06-01 01:20:52 - myp.app - INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': None, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
2025-06-01 01:20:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:52] "POST /api/dashboard/refresh HTTP/1.1" 200 -
2025-06-01 01:20:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:52] "POST /api/dashboard/refresh HTTP/1.1" 200 -
2025-06-01 01:20:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:52] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /dashboard HTTP/1.1" 200 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:20:53 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:20:53 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:20:53 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:20:53 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/favicon.svg HTTP/1.1" 304 -
2025-06-01 01:20:53 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:53] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:20:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:20:54] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:21:06 - myp.app - INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 01:21:06 - myp.app - INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 01:21:06 - myp.app - INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 01:21:06 - myp.app - ERROR - Fehler beim Abrufen der Dashboard-Statistiken: '>' not supported between instances of 'NoneType' and 'int'
2025-06-01 01:21:06 - myp.app - INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
2025-06-01 01:21:06 - myp.app - INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 0, 'online_printers': 0, 'offline_printers': 0}
2025-06-01 01:21:06 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:06] "POST /api/dashboard/refresh HTTP/1.1" 200 -
2025-06-01 01:21:06 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:06] "POST /api/dashboard/refresh HTTP/1.1" 200 -
2025-06-01 01:21:06 - myp.app - INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
2025-06-01 01:21:06 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:06] "POST /api/dashboard/refresh HTTP/1.1" 200 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /dashboard HTTP/1.1" 200 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 01:21:07 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:07] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 01:21:08 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:21:08 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:21:08 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 01:21:08 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/favicon.svg HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 01:21:08 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:08] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 01:21:09 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:21:09] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 01:21:19 - myp.app - WARNING - 🛑 Signal 2 empfangen - fahre System herunter...
2025-06-01 01:21:19 - myp.app - INFO - 🔄 Beende Queue Manager...
2025-06-01 01:21:20 - myp.app - INFO - Job-Scheduler gestoppt
2025-06-01 01:21:20 - myp.app - INFO - 💾 Führe robustes Datenbank-Cleanup durch...
2025-06-01 01:21:20 - myp.database_cleanup - INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
2025-06-01 01:21:20 - myp.database_cleanup - INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
2025-06-01 01:21:20 - myp.database_cleanup - INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...

View File

@ -1815,3 +1815,11 @@ information about how to avoid this problem.
2025-06-01 01:02:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>) 2025-06-01 01:02:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:03:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>) 2025-06-01 01:03:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:03:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>) 2025-06-01 01:03:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:21:06 - myp.app - ERROR - Fehler beim Abrufen der Dashboard-Statistiken: '>' not supported between instances of 'NoneType' and 'int'
2025-06-01 01:23:19 - myp.app - ERROR - Fehler beim Abrufen der Dashboard-Statistiken: (sqlite3.InterfaceError) bad parameter or other API misuse
[SQL: SELECT count(*) AS count_1
FROM (SELECT printers.id AS printers_id, printers.name AS printers_name, printers.model AS printers_model, printers.location AS printers_location, printers.ip_address AS printers_ip_address, printers.mac_address AS printers_mac_address, printers.plug_ip AS printers_plug_ip, printers.plug_username AS printers_plug_username, printers.plug_password AS printers_plug_password, printers.status AS printers_status, printers.active AS printers_active, printers.created_at AS printers_created_at, printers.last_checked AS printers_last_checked
FROM printers
WHERE printers.active = 1 AND printers.status = ?) AS anon_1]
[parameters: ('online',)]
(Background on this error at: https://sqlalche.me/e/20/rvf5)

View File

@ -19,3 +19,4 @@
2025-06-01 01:15:44 - myp.jobs - INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 01:15:44 - myp.jobs - INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 01:16:03 - myp.jobs - INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 01:16:03 - myp.jobs - INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 01:16:18 - myp.jobs - INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 01:16:18 - myp.jobs - INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 01:19:40 - myp.jobs - INFO - Jobs abgerufen: 0 von 0 (Seite 1)

View File

@ -2659,3 +2659,61 @@
2025-06-01 01:16:03 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) 2025-06-01 01:16:03 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 01:16:27 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) 2025-06-01 01:16:27 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:16:27 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker 2025-06-01 01:16:27 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:19:10 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:19:10 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:19:15 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:19:15 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:19:40 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 01:19:41 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 01:19:41 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:19:41 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:19:41 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 01:19:44 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:19:44 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:19:50 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:19:50 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:20:20 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:20:20 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:20:22 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:20:22 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:20:52 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:20:52 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:20:53 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:20:53 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:21:08 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:21:08 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:22:59 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:22:59 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:23:20 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:23:20 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:23:27 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 01:23:27 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:23:27 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:23:27 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 01:23:29 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 01:23:43 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:23:43 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:23:47 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:23:47 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:23:54 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:23:54 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:24:04 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:24:04 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:24:06 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:24:06 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:24:36 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:24:36 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:25:06 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:25:06 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:25:36 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:25:36 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:26:00 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:26:00 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:26:33 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:26:33 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:26:35 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:26:35 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:26:45 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:26:45 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:26:50 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:26:50 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker

View File

@ -2754,3 +2754,8 @@
2025-06-01 01:13:16 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-01 01:13:16 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 01:13:17 - myp.scheduler - INFO - Scheduler-Thread gestartet 2025-06-01 01:13:17 - myp.scheduler - INFO - Scheduler-Thread gestartet
2025-06-01 01:13:17 - myp.scheduler - INFO - Scheduler gestartet 2025-06-01 01:13:17 - myp.scheduler - INFO - Scheduler gestartet
2025-06-01 01:21:20 - myp.scheduler - INFO - Scheduler-Thread beendet
2025-06-01 01:21:20 - myp.scheduler - INFO - Scheduler gestoppt
2025-06-01 01:22:56 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 01:22:57 - myp.scheduler - INFO - Scheduler-Thread gestartet
2025-06-01 01:22:57 - myp.scheduler - INFO - Scheduler gestartet

File diff suppressed because one or more lines are too long

View File

@ -265,19 +265,65 @@ async function loadStats() {
const response = await fetch('/api/stats'); const response = await fetch('/api/stats');
const data = await response.json(); const data = await response.json();
// Update dashboard counters // Update dashboard counters mit robusten ID-Checks
document.getElementById('total-users-count').textContent = data.total_users || 0; const userCountEl = document.getElementById('live-users-count');
document.getElementById('total-printers-count').textContent = data.total_printers || 0; if (userCountEl) {
document.getElementById('active-jobs-count').textContent = data.active_jobs || 0; userCountEl.textContent = data.total_users || 0;
}
const printerCountEl = document.getElementById('live-printers-count');
if (printerCountEl) {
printerCountEl.textContent = data.total_printers || 0;
}
const activeJobsEl = document.getElementById('live-jobs-active');
if (activeJobsEl) {
activeJobsEl.textContent = data.active_jobs || 0;
}
// Update scheduler status // Update scheduler status
updateSchedulerStatusIndicator(data.scheduler_status || false); updateSchedulerStatusIndicator(data.scheduler_status || false);
// Update additional stats if elements exist
const onlinePrintersEl = document.getElementById('live-printers-online');
if (onlinePrintersEl) {
onlinePrintersEl.textContent = `${data.online_printers || 0} online`;
}
const queuedJobsEl = document.getElementById('live-jobs-queued');
if (queuedJobsEl) {
queuedJobsEl.textContent = `${data.queued_jobs || 0} in Warteschlange`;
}
const successRateEl = document.getElementById('live-success-rate');
if (successRateEl) {
successRateEl.textContent = `${data.success_rate || 0}%`;
}
// Update progress bars if they exist
updateProgressBar('users-progress', data.total_users, 10);
updateProgressBar('printers-progress', data.online_printers, data.total_printers);
updateProgressBar('jobs-progress', data.active_jobs, 10);
updateProgressBar('success-progress', data.success_rate, 100);
console.log('✅ Dashboard-Statistiken erfolgreich aktualisiert:', data);
} catch (error) { } catch (error) {
console.error('Error loading stats:', error); console.error('Error loading stats:', error);
showToast('Fehler beim Laden der Statistiken', 'error'); showToast('Fehler beim Laden der Statistiken', 'error');
} }
} }
/**
* Helper-Funktion zum sicheren Aktualisieren von Progress-Bars
*/
function updateProgressBar(progressId, currentValue, maxValue) {
const progressEl = document.getElementById(progressId);
if (progressEl && currentValue !== undefined && maxValue > 0) {
const percentage = Math.min(100, Math.max(0, (currentValue / maxValue) * 100));
progressEl.style.width = `${percentage}%`;
}
}
function updateSchedulerStatusIndicator(isRunning) { function updateSchedulerStatusIndicator(isRunning) {
const statusText = document.getElementById('scheduler-status'); const statusText = document.getElementById('scheduler-status');
const indicator = document.getElementById('scheduler-indicator'); const indicator = document.getElementById('scheduler-indicator');

View File

@ -433,7 +433,10 @@ async function loadAdminStats() {
// Aktualisiere die Statistik-Karten // Aktualisiere die Statistik-Karten
const statsContainer = document.getElementById('admin-stats'); const statsContainer = document.getElementById('admin-stats');
if (!statsContainer) return; if (!statsContainer) {
console.warn('Stats-Container nicht gefunden');
return;
}
statsContainer.innerHTML = ` statsContainer.innerHTML = `
<div class="stat-card"> <div class="stat-card">
@ -443,7 +446,7 @@ async function loadAdminStats() {
</svg> </svg>
</div> </div>
<div class="stat-title">Benutzer</div> <div class="stat-title">Benutzer</div>
<div class="stat-value" id="total-users-count">${data.total_users || 0}</div> <div class="stat-value" id="admin-total-users-count">${data.total_users || 0}</div>
<div class="stat-desc">Registrierte Benutzer</div> <div class="stat-desc">Registrierte Benutzer</div>
</div> </div>
@ -454,7 +457,7 @@ async function loadAdminStats() {
</svg> </svg>
</div> </div>
<div class="stat-title">Drucker</div> <div class="stat-title">Drucker</div>
<div class="stat-value" id="total-printers-count">${data.total_printers || 0}</div> <div class="stat-value" id="admin-total-printers-count">${data.total_printers || 0}</div>
<div class="stat-desc">Verbundene Drucker</div> <div class="stat-desc">Verbundene Drucker</div>
</div> </div>
@ -465,7 +468,7 @@ async function loadAdminStats() {
</svg> </svg>
</div> </div>
<div class="stat-title">Aktive Jobs</div> <div class="stat-title">Aktive Jobs</div>
<div class="stat-value" id="active-jobs-count">${data.active_jobs || 0}</div> <div class="stat-value" id="admin-active-jobs-count">${data.active_jobs || 0}</div>
<div class="stat-desc">Laufende Druckaufträge</div> <div class="stat-desc">Laufende Druckaufträge</div>
</div> </div>
@ -476,10 +479,12 @@ async function loadAdminStats() {
</svg> </svg>
</div> </div>
<div class="stat-title">Erfolgsrate</div> <div class="stat-title">Erfolgsrate</div>
<div class="stat-value" id="success-rate">${data.success_rate || '0%'}</div> <div class="stat-value" id="admin-success-rate">${data.success_rate || '0%'}</div>
<div class="stat-desc">Erfolgreiche Druckaufträge</div> <div class="stat-desc">Erfolgreiche Druckaufträge</div>
</div> </div>
`; `;
console.log('✅ Admin-Statistiken erfolgreich aktualisiert:', data);
} catch (error) { } catch (error) {
console.error('Error loading admin stats:', error); console.error('Error loading admin stats:', error);
showNotification('Fehler beim Laden der Admin-Statistiken', 'error'); showNotification('Fehler beim Laden der Admin-Statistiken', 'error');

View File

@ -3,6 +3,72 @@
* Sammelt alle Refresh-Funktionen für verschiedene Seiten und Komponenten * Sammelt alle Refresh-Funktionen für verschiedene Seiten und Komponenten
*/ */
/**
* Utility-Funktionen für robustes DOM-Element-Handling
*/
/**
* Sicheres Aktualisieren von Element-Inhalten
* @param {string} elementId - Die ID des Elements
* @param {string|number} value - Der zu setzende Wert
* @param {Object} options - Optionale Parameter
* @returns {boolean} - true wenn erfolgreich, false wenn Element nicht gefunden
*/
function safeUpdateElement(elementId, value, options = {}) {
const {
fallbackValue = '-',
logWarning = true,
attribute = 'textContent',
transform = null
} = options;
const element = document.getElementById(elementId);
if (!element) {
if (logWarning) {
console.warn(`🔍 Element mit ID '${elementId}' nicht gefunden`);
}
return false;
}
try {
const finalValue = value !== undefined && value !== null ? value : fallbackValue;
const displayValue = transform ? transform(finalValue) : finalValue;
element[attribute] = displayValue;
return true;
} catch (error) {
console.error(`❌ Fehler beim Aktualisieren von Element '${elementId}':`, error);
return false;
}
}
/**
* Sicheres Aktualisieren mehrerer Elemente
* @param {Object} updates - Objekt mit elementId: value Paaren
* @param {Object} options - Optionale Parameter
*/
function safeBatchUpdate(updates, options = {}) {
const results = {};
Object.entries(updates).forEach(([elementId, value]) => {
results[elementId] = safeUpdateElement(elementId, value, options);
});
const successful = Object.values(results).filter(Boolean).length;
const total = Object.keys(updates).length;
console.log(`📊 Batch-Update: ${successful}/${total} Elemente erfolgreich aktualisiert`);
return results;
}
/**
* Prüfen ob Element existiert
* @param {string} elementId - Die ID des Elements
* @returns {boolean} - true wenn Element existiert
*/
function elementExists(elementId) {
return document.getElementById(elementId) !== null;
}
/** /**
* Dashboard-Refresh-Funktion * Dashboard-Refresh-Funktion
*/ */
@ -301,7 +367,10 @@ function updateDashboardStats(stats) {
*/ */
function updateStatsCounter(elementId, value, animate = true) { function updateStatsCounter(elementId, value, animate = true) {
const element = document.getElementById(elementId); const element = document.getElementById(elementId);
if (!element) return; if (!element) {
console.warn(`Element mit ID '${elementId}' nicht gefunden`);
return;
}
if (animate) { if (animate) {
// Animierte Zählung // Animierte Zählung

View File

@ -202,6 +202,53 @@
.dark .dropdown-menu::-webkit-scrollbar-thumb { .dark .dropdown-menu::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.1);
} }
/* ===== DO NOT DISTURB BUTTON STYLES ===== */
.dnd-toggle-button {
/* Inaktiv (Standard) */
background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(59, 130, 246, 0.1));
color: rgb(99, 102, 241);
border: 1px solid rgba(99, 102, 241, 0.2);
}
.dnd-toggle-button:hover {
background: linear-gradient(135deg, rgba(99, 102, 241, 0.15), rgba(59, 130, 246, 0.15));
border-color: rgba(99, 102, 241, 0.3);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(99, 102, 241, 0.15);
}
/* Aktiv (DND eingeschaltet) */
.dnd-toggle-button.active {
background: linear-gradient(135deg, rgba(249, 115, 22, 0.9), rgba(234, 88, 12, 0.9));
color: white;
border: 1px solid rgba(249, 115, 22, 0.8);
box-shadow: 0 2px 8px rgba(249, 115, 22, 0.3);
}
.dnd-toggle-button.active:hover {
background: linear-gradient(135deg, rgba(249, 115, 22, 1), rgba(234, 88, 12, 1));
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(249, 115, 22, 0.4);
}
/* Dark Mode Anpassungen */
.dark .dnd-toggle-button {
background: linear-gradient(135deg, rgba(99, 102, 241, 0.15), rgba(59, 130, 246, 0.15));
color: rgb(147, 197, 253);
border: 1px solid rgba(99, 102, 241, 0.3);
}
.dark .dnd-toggle-button:hover {
background: linear-gradient(135deg, rgba(99, 102, 241, 0.2), rgba(59, 130, 246, 0.2));
border-color: rgba(99, 102, 241, 0.4);
}
.dark .dnd-toggle-button.active {
background: linear-gradient(135deg, rgba(249, 115, 22, 0.9), rgba(234, 88, 12, 0.9));
color: white;
border: 1px solid rgba(249, 115, 22, 0.8);
}
</style> </style>
{% block head %}{% endblock %} {% block head %}{% endblock %}
@ -662,43 +709,30 @@
</div> </div>
</div> </div>
</div> </div>
<!-- Do Not Disturb Controls --> <!-- Do Not Disturb Controls -->
<div class="flex flex-col space-y-4"> <div class="flex flex-col space-y-4">
<h3 class="text-lg font-semibold text-slate-900 dark:text-white transition-colors duration-300">Benachrichtigungen</h3> <h3 class="text-lg font-semibold text-slate-900 dark:text-white transition-colors duration-300">Benachrichtigungen</h3>
<div class="space-y-3"> <div class="space-y-3">
<!-- Do Not Disturb Toggle --> <!-- Do Not Disturb Toggle - Vereinfacht -->
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-xs text-slate-600 dark:text-slate-400">Nicht stören:</span> <span class="text-xs text-slate-600 dark:text-slate-400">Nicht stören:</span>
<button <button
id="dndToggle" id="dndToggle"
class="relative p-2 rounded-lg text-slate-700 dark:text-slate-300 hover:bg-slate-100/80 dark:hover:bg-slate-800/50 transition-all duration-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 group" class="dnd-toggle-button px-3 py-1.5 rounded-lg text-xs font-medium transition-all duration-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
aria-label="Do Not Disturb umschalten" aria-label="Do Not Disturb umschalten"
data-dnd-toggle data-dnd-toggle
title="Benachrichtigungen stumm schalten" title="Benachrichtigungen stumm schalten"
> >
<!-- DND Icon (Stumm) --> <span class="dnd-text">Inaktiv</span>
<div class="dnd-icon-off transition-all duration-300">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"/>
</svg>
</div>
<!-- DND Icon (Aktiv) - versteckt by default -->
<div class="dnd-icon-on absolute inset-0 flex items-center justify-center transition-all duration-300 opacity-0 scale-75">
<svg class="w-4 h-4 text-red-500" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"/>
</svg>
</div>
<!-- Notification Counter für unterdrückte Messages -->
<span id="dndCounter" class="dnd-counter hidden">0</span>
</button> </button>
</div> </div>
<!-- DND Status Anzeige --> <!-- DND Status und Counter -->
<div id="dndStatus" class="text-xs text-slate-500 dark:text-slate-400 hidden"> <div id="dndStatus" class="text-xs text-slate-500 dark:text-slate-400">
<span class="dnd-status-text">Inaktiv</span> <div class="flex items-center justify-between">
<span class="dnd-status-text">Alle Benachrichtigungen aktiv</span>
<span id="dndCounter" class="dnd-counter hidden px-2 py-1 bg-orange-500 text-white rounded-full text-xs font-medium">0 unterdrückt</span>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -810,6 +844,183 @@
console.log('🚀 MYP Platform UI erfolgreich initialisiert'); console.log('🚀 MYP Platform UI erfolgreich initialisiert');
}); });
/**
* Do Not Disturb (DND) Funktionalität
*/
class DoNotDisturbManager {
constructor() {
this.storageKey = 'myp-dnd-mode';
this.counterKey = 'myp-dnd-counter';
this.suppressedMessages = [];
this.isEnabled = this.loadDNDState();
this.suppressedCount = this.loadSuppressedCount();
this.init();
}
init() {
const dndToggle = document.getElementById('dndToggle');
const dndStatus = document.getElementById('dndStatus');
const dndCounter = document.getElementById('dndCounter');
if (dndToggle) {
dndToggle.addEventListener('click', () => this.toggle());
this.updateUI();
}
// Integration mit dem bestehenden Benachrichtigungssystem
this.integrateWithNotificationSystem();
}
toggle() {
this.isEnabled = !this.isEnabled;
this.saveDNDState();
this.updateUI();
if (!this.isEnabled) {
// Beim Deaktivieren alle unterdrückten Nachrichten anzeigen
this.showSuppressedMessages();
this.resetSuppressedCount();
}
// Feedback für den Benutzer
const message = this.isEnabled
? 'Nicht stören aktiviert - Benachrichtigungen werden unterdrückt'
: 'Nicht stören deaktiviert - Benachrichtigungen sind wieder aktiv';
if (typeof showFlashMessage === 'function') {
showFlashMessage(message, 'info', 3000);
}
console.log(`🔕 DND ${this.isEnabled ? 'aktiviert' : 'deaktiviert'}`);
}
updateUI() {
const dndToggle = document.getElementById('dndToggle');
const dndText = dndToggle?.querySelector('.dnd-text');
const dndStatusText = document.querySelector('.dnd-status-text');
const dndCounter = document.getElementById('dndCounter');
if (this.isEnabled) {
dndToggle?.classList.add('active');
if (dndText) dndText.textContent = 'Aktiv';
if (dndStatusText) dndStatusText.textContent = 'Benachrichtigungen unterdrückt';
dndToggle?.setAttribute('title', 'Nicht stören deaktivieren');
} else {
dndToggle?.classList.remove('active');
if (dndText) dndText.textContent = 'Inaktiv';
if (dndStatusText) dndStatusText.textContent = 'Alle Benachrichtigungen aktiv';
dndToggle?.setAttribute('title', 'Nicht stören aktivieren');
}
// Counter aktualisieren
if (dndCounter) {
if (this.suppressedCount > 0 && this.isEnabled) {
dndCounter.textContent = `${this.suppressedCount} unterdrückt`;
dndCounter.classList.remove('hidden');
} else {
dndCounter.classList.add('hidden');
}
}
}
shouldSuppressNotification(message, type) {
if (!this.isEnabled) return false;
// Wichtige Nachrichten (Fehler) nicht unterdrücken
if (type === 'error' || type === 'danger') return false;
// Nachricht zur Liste der unterdrückten hinzufügen
this.suppressedMessages.push({
message,
type,
timestamp: new Date().toISOString()
});
this.incrementSuppressedCount();
return true;
}
showSuppressedMessages() {
if (this.suppressedMessages.length === 0) return;
// Sammelnachricht über unterdrückte Benachrichtigungen
const count = this.suppressedMessages.length;
const summaryMessage = `${count} Benachrichtigung${count > 1 ? 'en' : ''} während "Nicht stören" erhalten`;
if (typeof showFlashMessage === 'function') {
showFlashMessage(summaryMessage, 'info', 4000);
}
// Optional: Alle einzelnen Nachrichten anzeigen (mit Verzögerung)
this.suppressedMessages.forEach((item, index) => {
setTimeout(() => {
if (typeof showFlashMessage === 'function') {
showFlashMessage(item.message, item.type, 3000);
}
}, (index + 1) * 500);
});
this.suppressedMessages = [];
}
incrementSuppressedCount() {
this.suppressedCount++;
this.saveSuppressedCount();
this.updateUI();
}
resetSuppressedCount() {
this.suppressedCount = 0;
this.saveSuppressedCount();
this.updateUI();
}
integrateWithNotificationSystem() {
// Überschreibe showFlashMessage wenn verfügbar
if (typeof window.showFlashMessage === 'function') {
const originalShowFlashMessage = window.showFlashMessage;
window.showFlashMessage = (message, type, duration) => {
if (this.shouldSuppressNotification(message, type)) {
console.log(`🔕 Benachrichtigung unterdrückt: ${message}`);
return;
}
return originalShowFlashMessage(message, type, duration);
};
}
}
loadDNDState() {
const saved = localStorage.getItem(this.storageKey);
return saved === 'true';
}
saveDNDState() {
localStorage.setItem(this.storageKey, this.isEnabled.toString());
}
loadSuppressedCount() {
const saved = localStorage.getItem(this.counterKey);
return saved ? parseInt(saved, 10) : 0;
}
saveSuppressedCount() {
localStorage.setItem(this.counterKey, this.suppressedCount.toString());
}
// Public API
getState() {
return {
enabled: this.isEnabled,
suppressedCount: this.suppressedCount,
suppressedMessages: this.suppressedMessages
};
}
}
// DND Manager global verfügbar machen
window.dndManager = new DoNotDisturbManager();
</script> </script>
{% block scripts %}{% endblock %} {% block scripts %}{% endblock %}

View File

@ -183,7 +183,7 @@ async function loadBasicStats() {
throw new Error(data.error || 'Fehler beim Laden der Statistiken'); throw new Error(data.error || 'Fehler beim Laden der Statistiken');
} }
// Statistiken aktualisieren // Statistiken aktualisieren mit defensiven Checks
updateStatsCounter('total-jobs-count', data.total_jobs); updateStatsCounter('total-jobs-count', data.total_jobs);
updateStatsCounter('completed-jobs-count', data.completed_jobs); updateStatsCounter('completed-jobs-count', data.completed_jobs);
updateStatsCounter('online-printers-count', data.online_printers); updateStatsCounter('online-printers-count', data.online_printers);
@ -192,6 +192,8 @@ async function loadBasicStats() {
updateStatsCounter('failed-jobs-count', data.failed_jobs); updateStatsCounter('failed-jobs-count', data.failed_jobs);
updateStatsCounter('total-users-count', data.total_users); updateStatsCounter('total-users-count', data.total_users);
console.log('✅ Basis-Statistiken erfolgreich geladen:', data);
} catch (error) { } catch (error) {
console.error('Fehler beim Laden der Basis-Statistiken:', error); console.error('Fehler beim Laden der Basis-Statistiken:', error);
showToast('Fehler beim Laden der Statistiken', 'error'); showToast('Fehler beim Laden der Statistiken', 'error');
@ -200,7 +202,10 @@ async function loadBasicStats() {
function updateStatsCounter(elementId, value, animate = true) { function updateStatsCounter(elementId, value, animate = true) {
const element = document.getElementById(elementId); const element = document.getElementById(elementId);
if (!element) return; if (!element) {
console.warn(`Element mit ID '${elementId}' nicht gefunden - wird übersprungen`);
return;
}
if (animate) { if (animate) {
// Animierte Zählung // Animierte Zählung