📝 🚀 "Refactor backend structure

This commit is contained in:
Till Tomczak 2025-06-01 01:09:49 +02:00
parent 4dd3c4b1b1
commit 00c2cc3f27
15 changed files with 2264 additions and 218 deletions

File diff suppressed because it is too large Load Diff

534
backend/blueprints/jobs.py Normal file
View File

@ -0,0 +1,534 @@
"""
Jobs Blueprint - API-Endpunkte für Job-Verwaltung
Alle Job-bezogenen API-Endpunkte sind hier zentralisiert.
"""
from flask import Blueprint, request, jsonify, current_app
from flask_login import login_required, current_user
from datetime import datetime, timedelta
from functools import wraps
from sqlalchemy.orm import joinedload
from models import get_db_session, Job, Printer
from utils.logging_config import get_logger
# Blueprint initialisieren
jobs_blueprint = Blueprint('jobs', __name__, url_prefix='/api/jobs')
# Logger für Jobs
jobs_logger = get_logger("jobs")
def job_owner_required(f):
"""Decorator um zu prüfen, ob der aktuelle Benutzer Besitzer eines Jobs ist oder Admin"""
@wraps(f)
def decorated_function(job_id, *args, **kwargs):
db_session = get_db_session()
job = db_session.query(Job).filter(Job.id == job_id).first()
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
is_owner = job.user_id == int(current_user.id) or job.owner_id == int(current_user.id)
is_admin = current_user.is_admin
if not (is_owner or is_admin):
db_session.close()
return jsonify({"error": "Keine Berechtigung"}), 403
db_session.close()
return f(job_id, *args, **kwargs)
return decorated_function
def check_printer_status(ip_address: str, timeout: int = 7):
"""Mock-Implementierung für Drucker-Status-Check"""
# TODO: Implementiere echten Status-Check
if ip_address:
return "online", True
return "offline", False
@jobs_blueprint.route('', methods=['GET'])
@login_required
def get_jobs():
"""Gibt alle Jobs zurück. Admins sehen alle Jobs, normale Benutzer nur ihre eigenen."""
db_session = get_db_session()
try:
# Paginierung unterstützen
page = request.args.get('page', 1, type=int)
per_page = request.args.get('per_page', 50, type=int)
status_filter = request.args.get('status')
# Query aufbauen
query = db_session.query(Job).options(joinedload(Job.user), joinedload(Job.printer))
# Admin sieht alle Jobs, User nur eigene
if not current_user.is_admin:
query = query.filter(Job.user_id == int(current_user.id))
# Status-Filter anwenden
if status_filter:
query = query.filter(Job.status == status_filter)
# Sortierung: neueste zuerst
query = query.order_by(Job.created_at.desc())
# Paginierung anwenden
offset = (page - 1) * per_page
jobs = query.offset(offset).limit(per_page).all()
# Gesamtanzahl für Paginierung
total_count = query.count()
# Convert jobs to dictionaries before closing the session
job_dicts = [job.to_dict() for job in jobs]
db_session.close()
jobs_logger.info(f"Jobs abgerufen: {len(job_dicts)} von {total_count} (Seite {page})")
return jsonify({
"jobs": job_dicts,
"pagination": {
"page": page,
"per_page": per_page,
"total": total_count,
"pages": (total_count + per_page - 1) // per_page
}
})
except Exception as e:
jobs_logger.error(f"Fehler beim Abrufen von Jobs: {str(e)}")
db_session.close()
return jsonify({"error": "Interner Serverfehler"}), 500
@jobs_blueprint.route('/<int:job_id>', methods=['GET'])
@login_required
@job_owner_required
def get_job(job_id):
"""Gibt einen einzelnen Job zurück."""
db_session = get_db_session()
try:
# Eagerly load the user and printer relationships
job = db_session.query(Job).options(joinedload(Job.user), joinedload(Job.printer)).filter(Job.id == job_id).first()
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
# Convert to dict before closing session
job_dict = job.to_dict()
db_session.close()
return jsonify(job_dict)
except Exception as e:
jobs_logger.error(f"Fehler beim Abrufen des Jobs {job_id}: {str(e)}")
db_session.close()
return jsonify({"error": "Interner Serverfehler"}), 500
@jobs_blueprint.route('', methods=['POST'])
@login_required
def create_job():
"""
Erstellt einen neuen Job.
Body: {
"name": str (optional),
"description": str (optional),
"printer_id": int,
"start_iso": str,
"duration_minutes": int,
"file_path": str (optional)
}
"""
try:
data = request.json
# Pflichtfelder prüfen
required_fields = ["printer_id", "start_iso", "duration_minutes"]
for field in required_fields:
if field not in data:
return jsonify({"error": f"Feld '{field}' fehlt"}), 400
# Daten extrahieren und validieren
printer_id = int(data["printer_id"])
start_iso = data["start_iso"]
duration_minutes = int(data["duration_minutes"])
# Optional: Jobtitel, Beschreibung und Dateipfad
name = data.get("name", f"Druckjob vom {datetime.now().strftime('%d.%m.%Y %H:%M')}")
description = data.get("description", "")
file_path = data.get("file_path")
# Start-Zeit parsen
try:
start_at = datetime.fromisoformat(start_iso.replace('Z', '+00:00'))
except ValueError:
return jsonify({"error": "Ungültiges Startdatum"}), 400
# Dauer validieren
if duration_minutes <= 0:
return jsonify({"error": "Dauer muss größer als 0 sein"}), 400
# End-Zeit berechnen
end_at = start_at + timedelta(minutes=duration_minutes)
db_session = get_db_session()
# Prüfen, ob der Drucker existiert
printer = db_session.query(Printer).get(printer_id)
if not printer:
db_session.close()
return jsonify({"error": "Drucker nicht gefunden"}), 404
# Prüfen, ob der Drucker online ist
printer_status, printer_active = check_printer_status(printer.plug_ip if printer.plug_ip else "")
# Status basierend auf Drucker-Verfügbarkeit setzen
if printer_status == "online" and printer_active:
job_status = "scheduled"
else:
job_status = "waiting_for_printer"
# Neuen Job erstellen
new_job = Job(
name=name,
description=description,
printer_id=printer_id,
user_id=current_user.id,
owner_id=current_user.id,
start_at=start_at,
end_at=end_at,
status=job_status,
file_path=file_path,
duration_minutes=duration_minutes
)
db_session.add(new_job)
db_session.commit()
# Job-Objekt für die Antwort serialisieren
job_dict = new_job.to_dict()
db_session.close()
jobs_logger.info(f"Neuer Job {new_job.id} erstellt für Drucker {printer_id}, Start: {start_at}, Dauer: {duration_minutes} Minuten")
return jsonify({"job": job_dict}), 201
except Exception as e:
jobs_logger.error(f"Fehler beim Erstellen eines Jobs: {str(e)}")
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500
@jobs_blueprint.route('/<int:job_id>', methods=['PUT'])
@login_required
@job_owner_required
def update_job(job_id):
"""Aktualisiert einen existierenden Job."""
try:
data = request.json
db_session = get_db_session()
job = db_session.query(Job).get(job_id)
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
# Prüfen, ob der Job bearbeitet werden kann
if job.status in ["finished", "aborted"]:
db_session.close()
return jsonify({"error": f"Job kann im Status '{job.status}' nicht bearbeitet werden"}), 400
# Felder aktualisieren, falls vorhanden
if "name" in data:
job.name = data["name"]
if "description" in data:
job.description = data["description"]
if "notes" in data:
job.notes = data["notes"]
if "start_iso" in data:
try:
new_start = datetime.fromisoformat(data["start_iso"].replace('Z', '+00:00'))
job.start_at = new_start
# End-Zeit neu berechnen falls Duration verfügbar
if job.duration_minutes:
job.end_at = new_start + timedelta(minutes=job.duration_minutes)
except ValueError:
db_session.close()
return jsonify({"error": "Ungültiges Startdatum"}), 400
if "duration_minutes" in data:
duration = int(data["duration_minutes"])
if duration <= 0:
db_session.close()
return jsonify({"error": "Dauer muss größer als 0 sein"}), 400
job.duration_minutes = duration
# End-Zeit neu berechnen
if job.start_at:
job.end_at = job.start_at + timedelta(minutes=duration)
# Aktualisierungszeitpunkt setzen
job.updated_at = datetime.now()
db_session.commit()
# Job-Objekt für die Antwort serialisieren
job_dict = job.to_dict()
db_session.close()
jobs_logger.info(f"Job {job_id} aktualisiert")
return jsonify({"job": job_dict})
except Exception as e:
jobs_logger.error(f"Fehler beim Aktualisieren von Job {job_id}: {str(e)}")
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500
@jobs_blueprint.route('/<int:job_id>', methods=['DELETE'])
@login_required
@job_owner_required
def delete_job(job_id):
"""Löscht einen Job."""
try:
db_session = get_db_session()
job = db_session.query(Job).get(job_id)
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
# Prüfen, ob der Job gelöscht werden kann
if job.status == "running":
db_session.close()
return jsonify({"error": "Laufende Jobs können nicht gelöscht werden"}), 400
job_name = job.name
db_session.delete(job)
db_session.commit()
db_session.close()
jobs_logger.info(f"Job '{job_name}' (ID: {job_id}) gelöscht von Benutzer {current_user.id}")
return jsonify({"success": True, "message": "Job erfolgreich gelöscht"})
except Exception as e:
jobs_logger.error(f"Fehler beim Löschen des Jobs {job_id}: {str(e)}")
return jsonify({"error": "Interner Serverfehler"}), 500
@jobs_blueprint.route('/active', methods=['GET'])
@login_required
def get_active_jobs():
"""Gibt alle aktiven Jobs zurück."""
try:
db_session = get_db_session()
query = db_session.query(Job).options(
joinedload(Job.user),
joinedload(Job.printer)
).filter(
Job.status.in_(["scheduled", "running"])
)
# Normale Benutzer sehen nur ihre eigenen aktiven Jobs
if not current_user.is_admin:
query = query.filter(Job.user_id == current_user.id)
active_jobs = query.all()
result = []
for job in active_jobs:
job_dict = job.to_dict()
# Aktuelle Restzeit berechnen
if job.status == "running" and job.end_at:
remaining_time = job.end_at - datetime.now()
if remaining_time.total_seconds() > 0:
job_dict["remaining_minutes"] = int(remaining_time.total_seconds() / 60)
else:
job_dict["remaining_minutes"] = 0
result.append(job_dict)
db_session.close()
return jsonify({"jobs": result})
except Exception as e:
jobs_logger.error(f"Fehler beim Abrufen aktiver Jobs: {str(e)}")
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500
@jobs_blueprint.route('/current', methods=['GET'])
@login_required
def get_current_job():
"""Gibt den aktuell laufenden Job für den eingeloggten Benutzer zurück."""
db_session = get_db_session()
try:
current_job = db_session.query(Job).filter(
Job.user_id == current_user.id,
Job.status == "running"
).first()
if current_job:
job_dict = current_job.to_dict()
db_session.close()
return jsonify(job_dict)
else:
db_session.close()
return jsonify({"message": "Kein aktueller Job"}), 404
except Exception as e:
jobs_logger.error(f"Fehler beim Abrufen des aktuellen Jobs: {str(e)}")
db_session.close()
return jsonify({"error": "Interner Serverfehler"}), 500
@jobs_blueprint.route('/<int:job_id>/start', methods=['POST'])
@login_required
@job_owner_required
def start_job(job_id):
"""Startet einen Job manuell."""
try:
db_session = get_db_session()
job = db_session.query(Job).options(joinedload(Job.printer)).get(job_id)
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
# Prüfen, ob der Job gestartet werden kann
if job.status not in ["scheduled", "waiting_for_printer"]:
db_session.close()
return jsonify({"error": f"Job kann im Status '{job.status}' nicht gestartet werden"}), 400
# Drucker-Status prüfen
if job.printer.plug_ip:
status, active = check_printer_status(job.printer.plug_ip)
if status != "online" or not active:
db_session.close()
return jsonify({"error": "Drucker ist nicht online"}), 400
# Job als laufend markieren
job.status = "running"
job.start_at = datetime.now()
job.end_at = job.start_at + timedelta(minutes=job.duration_minutes)
db_session.commit()
# Job-Objekt für die Antwort serialisieren
job_dict = job.to_dict()
db_session.close()
jobs_logger.info(f"Job {job_id} manuell gestartet")
return jsonify({"job": job_dict})
except Exception as e:
jobs_logger.error(f"Fehler beim Starten von Job {job_id}: {str(e)}")
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500
@jobs_blueprint.route('/<int:job_id>/pause', methods=['POST'])
@login_required
@job_owner_required
def pause_job(job_id):
"""Pausiert einen laufenden Job."""
try:
db_session = get_db_session()
job = db_session.query(Job).get(job_id)
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
# Prüfen, ob der Job pausiert werden kann
if job.status != "running":
db_session.close()
return jsonify({"error": f"Job kann im Status '{job.status}' nicht pausiert werden"}), 400
# Job pausieren
job.status = "paused"
db_session.commit()
# Job-Objekt für die Antwort serialisieren
job_dict = job.to_dict()
db_session.close()
jobs_logger.info(f"Job {job_id} pausiert")
return jsonify({"job": job_dict})
except Exception as e:
jobs_logger.error(f"Fehler beim Pausieren von Job {job_id}: {str(e)}")
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500
@jobs_blueprint.route('/<int:job_id>/resume', methods=['POST'])
@login_required
@job_owner_required
def resume_job(job_id):
"""Setzt einen pausierten Job fort."""
try:
db_session = get_db_session()
job = db_session.query(Job).get(job_id)
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
# Prüfen, ob der Job fortgesetzt werden kann
if job.status != "paused":
db_session.close()
return jsonify({"error": f"Job kann im Status '{job.status}' nicht fortgesetzt werden"}), 400
# Job fortsetzen
job.status = "running"
db_session.commit()
# Job-Objekt für die Antwort serialisieren
job_dict = job.to_dict()
db_session.close()
jobs_logger.info(f"Job {job_id} fortgesetzt")
return jsonify({"job": job_dict})
except Exception as e:
jobs_logger.error(f"Fehler beim Fortsetzen von Job {job_id}: {str(e)}")
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500
@jobs_blueprint.route('/<int:job_id>/finish', methods=['POST'])
@login_required
def finish_job(job_id):
"""Beendet einen Job manuell."""
try:
db_session = get_db_session()
job = db_session.query(Job).options(joinedload(Job.printer)).get(job_id)
if not job:
db_session.close()
return jsonify({"error": "Job nicht gefunden"}), 404
# Berechtigung prüfen
is_owner = job.user_id == int(current_user.id) or job.owner_id == int(current_user.id)
is_admin = current_user.is_admin
if not (is_owner or is_admin):
db_session.close()
return jsonify({"error": "Keine Berechtigung"}), 403
# Prüfen, ob der Job beendet werden kann
if job.status not in ["scheduled", "running", "paused"]:
db_session.close()
return jsonify({"error": f"Job kann im Status '{job.status}' nicht beendet werden"}), 400
# Job als beendet markieren
job.status = "finished"
job.actual_end_time = datetime.now()
db_session.commit()
# Job-Objekt für die Antwort serialisieren
job_dict = job.to_dict()
db_session.close()
jobs_logger.info(f"Job {job_id} manuell beendet durch Benutzer {current_user.id}")
return jsonify({"job": job_dict})
except Exception as e:
jobs_logger.error(f"Fehler beim manuellen Beenden von Job {job_id}: {str(e)}")
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@

View File

@ -78054,3 +78054,740 @@ WHERE users.id = ?
2025-06-01 00:45:17 - myp.database_cleanup - INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
2025-06-01 00:45:17 - myp.database_cleanup - INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
2025-06-01 00:45:17 - myp.database_cleanup - INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...
2025-06-01 00:56:22 - myp.windows_fixes - INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-01 00:56:22 - myp.windows_fixes - INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 00:56:22 - myp.windows_fixes - INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 00:56:22 - myp.windows_fixes - INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-01 00:56:22 - myp.app - INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
2025-06-01 00:56:22 - myp.printer_monitor - INFO - 🖨️ Drucker-Monitor initialisiert
2025-06-01 00:56:22 - myp.printer_monitor - INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
2025-06-01 00:56:22 - myp.database - INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 00:56:22 - myp.analytics - INFO - 📈 Analytics Engine initialisiert
2025-06-01 00:56:23 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet
2025-06-01 00:56:23 - myp.email_notification - INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 00:56:23 - myp.maintenance - INFO - Wartungs-Scheduler gestartet
2025-06-01 00:56:23 - myp.app - INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
2025-06-01 00:56:23 - myp.multi_location - INFO - Standard-Standort erstellt
2025-06-01 00:56:23 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet
2025-06-01 00:56:23 - myp.maintenance - INFO - Wartungs-Scheduler gestartet
2025-06-01 00:56:23 - myp.multi_location - INFO - Standard-Standort erstellt
2025-06-01 00:56:23 - myp.dashboard - INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 00:56:23 - myp.dashboard - INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
2025-06-01 00:56:23 - myp.security - INFO - 🔒 Security System initialisiert
2025-06-01 00:56:23 - myp.permissions - INFO - 🔐 Permission Template Helpers registriert
2025-06-01 00:56:23 - myp.app - INFO - ==================================================
2025-06-01 00:56:23 - myp.app - INFO - [START] MYP (Manage Your Printers) wird gestartet...
2025-06-01 00:56:23 - myp.app - INFO - [FOLDER] Log-Verzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\logs
2025-06-01 00:56:23 - myp.app - INFO - [CHART] Log-Level: INFO
2025-06-01 00:56:23 - myp.app - INFO - [PC] Betriebssystem: Windows 11
2025-06-01 00:56:23 - myp.app - INFO - [WEB] Hostname: C040L0079726760
2025-06-01 00:56:23 - myp.app - INFO - [TIME] Startzeit: 01.06.2025 00:56:23
2025-06-01 00:56:23 - myp.app - INFO - ==================================================
2025-06-01 00:56:23 - myp.app - INFO - 🔄 Starte Datenbank-Setup und Migrationen...
2025-06-01 00:56:23 - myp.app - INFO - Datenbank mit Optimierungen initialisiert
2025-06-01 00:56:23 - myp.app - INFO - ✅ JobOrder-Tabelle bereits vorhanden
2025-06-01 00:56:23 - myp.app - INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-01 00:56:23 - myp.app - INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
2025-06-01 00:56:23 - myp.app - INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
2025-06-01 00:56:23 - myp.printer_monitor - INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
2025-06-01 00:56:23 - myp.printer_monitor - WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
2025-06-01 00:56:23 - myp.app - INFO - Keine Drucker zur Initialisierung gefunden
2025-06-01 00:56:23 - myp.app - INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
2025-06-01 00:56:23 - myp.app - INFO - Job-Scheduler gestartet
2025-06-01 00:56:23 - myp.app - INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-01 00:56:23 - myp.app - INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
2025-06-01 00:56:24 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5000
* Running on http://192.168.178.111:5000
2025-06-01 00:56:24 - werkzeug - INFO - Press CTRL+C to quit
2025-06-01 00:56:24 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:56:24 - myp.app - INFO - Admin-Check für Funktion api_admin_stats_live: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:56:24 - myp.app - INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:56:24 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "GET /api/session/status HTTP/1.1" 302 -
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "GET /auth/login?next=/api/session/status HTTP/1.1" 302 -
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "GET / HTTP/1.1" 200 -
2025-06-01 00:56:24 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:24 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:24 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:24 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:56:24 - myp.printer_monitor - INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
2025-06-01 00:56:24 - myp.printer_monitor - INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
2025-06-01 00:56:24 - myp.printer_monitor - INFO - 🔍 Teste IP 1/6: 192.168.0.103
2025-06-01 00:56:25 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 00:56:25 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:25] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 00:56:25 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:56:25 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:25] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 00:56:25 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:25] "GET /dashboard HTTP/1.1" 200 -
2025-06-01 00:56:25 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/css/tailwind.min.css HTTP/1.1" 200 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/ui-components.js HTTP/1.1" 200 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:26 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:26 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:26 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:26 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:26 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 00:56:27 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:27] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:56:30 - myp.printer_monitor - INFO - 🔍 Teste IP 2/6: 192.168.0.104
2025-06-01 00:56:36 - myp.printer_monitor - INFO - 🔍 Teste IP 3/6: 192.168.0.100
2025-06-01 00:56:42 - myp.printer_monitor - INFO - 🔍 Teste IP 4/6: 192.168.0.101
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /printers HTTP/1.1" 200 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /api/printers HTTP/1.1" 200 -
2025-06-01 00:56:43 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:43 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:43 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:43 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /api/printers/monitor/live-status?use_cache=false HTTP/1.1" 200 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /api/printers HTTP/1.1" 200 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:44 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:44] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /admin-dashboard HTTP/1.1" 200 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - myp.app - WARNING - Schema-Problem beim User-Load für ID 1: tuple index out of range
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - myp.app - WARNING - Schema-Problem beim User-Load für ID 1: (sqlite3.InterfaceError) bad parameter or other API misuse
[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio
FROM users
WHERE users.id = ?
LIMIT ? OFFSET ?]
[parameters: (1, 1, 0)]
(Background on this error at: https://sqlalche.me/e/20/rvf5)
2025-06-01 00:56:45 - myp.app - INFO - User 1 erfolgreich über manuelle Abfrage geladen
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - myp.app - INFO - User 1 erfolgreich über manuelle Abfrage geladen
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/admin.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/admin-system.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/admin-live.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/js/admin-dashboard.js HTTP/1.1" 304 -
2025-06-01 00:56:45 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:45 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /api/stats HTTP/1.1" 302 -
2025-06-01 00:56:45 - myp.app - INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:45 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 00:56:45 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /auth/login?next=/api/stats HTTP/1.1" 302 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET / HTTP/1.1" 200 -
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:46 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:46] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:56:48 - myp.app - INFO - Admin-Check für Funktion admin_guest_requests: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:56:48 - myp.app - INFO - Admin-Gastanfragen Seite aufgerufen von User 1
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /admin/guest-requests HTTP/1.1" 200 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/js/admin-guest-requests.js HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /api/admin/guest-requests HTTP/1.1" 302 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:48 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:48 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:48 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:48 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /auth/login?next=/api/admin/guest-requests HTTP/1.1" 302 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET / HTTP/1.1" 200 -
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:48 - myp.printer_monitor - INFO - 🔍 Teste IP 5/6: 192.168.0.102
2025-06-01 00:56:49 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:49] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /admin-dashboard HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/admin.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/admin-system.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/admin-live.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/js/admin-dashboard.js HTTP/1.1" 304 -
2025-06-01 00:56:54 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /api/notifications HTTP/1.1" 302 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /api/stats HTTP/1.1" 302 -
2025-06-01 00:56:54 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:54 - myp.app - WARNING - Schema-Problem beim User-Load für ID 1: (sqlite3.InterfaceError) bad parameter or other API misuse
[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio
FROM users
WHERE users.id = ?
LIMIT ? OFFSET ?]
[parameters: (1, 1, 0)]
(Background on this error at: https://sqlalche.me/e/20/rvf5)
2025-06-01 00:56:54 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:56:54 - myp.app - INFO - User 1 erfolgreich über manuelle Abfrage geladen
2025-06-01 00:56:54 - myp.app - INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: 1, User ID: 1, Is Admin: True
2025-06-01 00:56:54 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /auth/login?next=/api/notifications HTTP/1.1" 302 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /auth/login?next=/api/stats HTTP/1.1" 302 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET / HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "GET / HTTP/1.1" 200 -
2025-06-01 00:56:54 - myp.printer_monitor - INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /jobs HTTP/1.1" 200 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /api/jobs HTTP/1.1" 404 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /api/printers HTTP/1.1" 200 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:56 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:56] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /stats HTTP/1.1" 200 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /calendar HTTP/1.1" 200 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/fullcalendar/main.min.css HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/fullcalendar/timegrid.min.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/fullcalendar/interaction.min.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/fullcalendar/list.min.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/fullcalendar/daygrid.min.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/fullcalendar/core.min.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:56:58 - 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 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "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 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:56:59 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:59] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:57:00 - myp.printer_monitor - INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.2s
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /dashboard HTTP/1.1" 200 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:57:02 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /api/user/settings HTTP/1.1" 200 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:57:02 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:57:02 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:57:02 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:57:03 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:03] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:57:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:32] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:57:32 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:57:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:32] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:57:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:32] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:57:32 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:57:32 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:57:32 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:57:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:32] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:57:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:32] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "GET /api/notifications HTTP/1.1" 302 -
2025-06-01 00:58:02 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:58:02 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:58:02 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:58:02 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "GET /auth/login?next=/api/notifications HTTP/1.1" 302 -
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "GET / HTTP/1.1" 200 -
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:58:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:32] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:58:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:32] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:58:32 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:58:32 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:58:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:32] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:58:32 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:58:32 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:58:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:32] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:58:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:32] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:59:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:02] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:59:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:02] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:59:02 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:02] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:59:02 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:02 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:02 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:02] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:59:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:02] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:59:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:32] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:59:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:32] "POST /api/dashboard/refresh HTTP/1.1" 404 -
2025-06-01 00:59:32 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:32 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:32] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:59:32 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:32 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:32] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:59:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:32] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /admin-dashboard HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/admin.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/admin-system.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/admin-live.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/js/admin-dashboard.js HTTP/1.1" 304 -
2025-06-01 00:59:39 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:39 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:39 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:39 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /api/user/settings HTTP/1.1" 302 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:59:39 - myp.app - INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /api/stats HTTP/1.1" 302 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /auth/login?next=/api/user/settings HTTP/1.1" 302 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /auth/login?next=/api/stats HTTP/1.1" 302 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET / HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET / HTTP/1.1" 200 -
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:59:40 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:40] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /admin-dashboard?tab=system HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/css/tailwind.min.css HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/ui-components.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/css/professional-theme.css HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/css/components.css HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/css/optimization-animations.css HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/offline-app.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/optimization-features.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/debug-fix.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - myp.app - WARNING - Schema-Problem beim User-Load für ID 1: (sqlite3.InterfaceError) bad parameter or other API misuse
[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio
FROM users
WHERE users.id = ?
LIMIT ? OFFSET ?]
[parameters: (1, 1, 0)]
(Background on this error at: https://sqlalche.me/e/20/rvf5)
2025-06-01 00:59:41 - myp.app - INFO - User 1 erfolgreich über manuelle Abfrage geladen
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/global-refresh-functions.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/event-handlers.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/dark-mode-fix.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/job-manager.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/csp-violation-handler.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/printer_monitor.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/notifications.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/session-manager.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/auto-logout.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/admin.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/admin-system.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/admin-live.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/js/admin-dashboard.js HTTP/1.1" 304 -
2025-06-01 00:59:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/user/settings HTTP/1.1" 302 -
2025-06-01 00:59:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 00:59:41 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/admin/system-health HTTP/1.1" 302 -
2025-06-01 00:59:41 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /auth/login?next=/api/user/settings HTTP/1.1" 302 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /auth/login?next=/api/admin/system-health HTTP/1.1" 302 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/manifest.json HTTP/1.1" 304 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET / HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET / HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /api/stats HTTP/1.1" 200 -
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "GET /static/icons/icon-144x144.png HTTP/1.1" 304 -
2025-06-01 00:59:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:59:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:42] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 00:59:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:42] "POST /api/session/heartbeat HTTP/1.1" 200 -
2025-06-01 00:59:51 - myp.app - INFO - Admin-Check für Funktion api_admin_stats_live: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:59:51 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 00:59:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:59:52 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 00:59:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:52] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 00:59:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:52] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:00:01 - 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:00:01 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
" 500 -
2025-06-01 01:00:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:02] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:00:11 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:11 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:11 - 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:00:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:11] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:00:11 - 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:00:11 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:00:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:11] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:00:11 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:00:11 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:00:11 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:00:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:11] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:00:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:11] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 01:00:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:11] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:00:12 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:12 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:12] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:00:12 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:12 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:12] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:00:12 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:13 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:13 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:13] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:00:21 - myp.app - WARNING - Schema-Problem beim User-Load für ID 1: tuple index out of range
2025-06-01 01:00:21 - 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:00:21 - myp.app - INFO - User 1 erfolgreich über manuelle Abfrage geladen
2025-06-01 01:00:21 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: 1, User ID: 1, Is Admin: True
2025-06-01 01:00:22 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:22 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:22] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:00:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:22] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:00:31 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:31 - 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:00:32 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:32 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:32] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:00:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:32] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:00:41 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:41 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:41 - 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:00:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:41] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 01:00:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:00:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:41] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:00:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:00:41 - 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:00:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:00:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:41] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:00:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:00:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:41] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:00:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:41] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:00:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:42 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:42] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:00:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:42] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:00:42 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:43 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:43] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:00:51 - 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:00:51 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:00:52 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:52] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:00:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:52] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:01 - 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:01:01 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:02] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:01:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:02] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:11 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:11] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 302 -
2025-06-01 01:01:11 - 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:01:11 - 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:01:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:11] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:01:11 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:11] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:01:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:11] "GET /auth/login?next=/api/printers/monitor/live-status?use_cache%3Dtrue HTTP/1.1" 302 -
2025-06-01 01:01:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:11] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 01:01:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:11] "GET / HTTP/1.1" 200 -
2025-06-01 01:01:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:11] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:01:12 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:12 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:12] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:12 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:12 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:12] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:01:12 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:13 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:13 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:13] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:21 - 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:01:21 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:22 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:22 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:22] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:22] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:01:31 - 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:01:31 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:32 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:32 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:32] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:32] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:01:41 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:41 - myp.app - WARNING - Schema-Problem beim User-Load für ID 1: tuple index out of range
2025-06-01 01:01:41 - myp.app - INFO - User 1 erfolgreich über manuelle Abfrage geladen
2025-06-01 01:01:41 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: 1, User ID: 1, Is Admin: True
2025-06-01 01:01:41 - 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:01:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:01:41 - 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:01:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:01:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:01:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:41] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:01:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:41] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:01:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:01:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:41] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:01:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:41] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 01:01:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:41] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:01:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:42] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:42 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:42 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:42] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:01:43 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:43] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:01:51 - 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:01:51 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:01:52 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:52] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:01:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:52] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:01 - 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:02:01 - myp.app - WARNING - Schema-Problem beim User-Load für ID 1: tuple index out of range
2025-06-01 01:02:01 - myp.app - INFO - User 1 erfolgreich über manuelle Abfrage geladen
2025-06-01 01:02:01 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: 1, User ID: 1, Is Admin: True
2025-06-01 01:02:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:02] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:02] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:02:11 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:11 - 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:02:11 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:11 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:02:11 - 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:02:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:11] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:02:11 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:02:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:11] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:02:11 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:02:11 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:02:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:11] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:02:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:11] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 01:02:11 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:11] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:02:12 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:12 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:12] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:12 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:12 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:12 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:12] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:02:13 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:13 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:13] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:21 - 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:02:21 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:22 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:22 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:22] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:02:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:22] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:31 - 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:02:31 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:32 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:32 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:32] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:32] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:02:41 - myp.app - INFO - Admin-Check für Funktion api_admin_database_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:41 - 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:02:41 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:41 - 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:02:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:41] "GET /api/notifications HTTP/1.1" 200 -
2025-06-01 01:02:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:41] "GET /api/admin/system-health HTTP/1.1" 200 -
2025-06-01 01:02:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:02:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:02:41 - myp.printer_monitor - INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 01:02:41 - myp.printer_monitor - INFO - Keine aktiven Drucker gefunden
2025-06-01 01:02:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:41] "GET /api/printers/monitor/live-status?use_cache=true HTTP/1.1" 200 -
2025-06-01 01:02:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:41] "GET /api/admin/database/status HTTP/1.1" 200 -
2025-06-01 01:02:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:41] "GET /api/session/status HTTP/1.1" 200 -
2025-06-01 01:02:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:42] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:42 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:42 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:42] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:02:43 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:43] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:02:51 - 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:02:51 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:02:52 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: 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:02:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:52] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:02:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:52] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:03:01 - myp.app - INFO - Admin-Check für Funktion api_admin_system_status: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 01:03:01 - 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: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 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:03:02] "GET /api/admin/system/status HTTP/1.1" 500 -
2025-06-01 01:03:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:03:02] "GET /api/admin/stats/live HTTP/1.1" 500 -
2025-06-01 01:03:03 - myp.app - WARNING - 🛑 Signal 2 empfangen - fahre System herunter...
2025-06-01 01:03:03 - myp.app - INFO - 🔄 Beende Queue Manager...
2025-06-01 01:03:04 - myp.app - INFO - Job-Scheduler gestoppt
2025-06-01 01:03:04 - myp.app - INFO - 💾 Führe robustes Datenbank-Cleanup durch...
2025-06-01 01:03:04 - myp.database_cleanup - INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
2025-06-01 01:03:04 - myp.database_cleanup - INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
2025-06-01 01:03:04 - myp.database_cleanup - INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...

View File

@ -1765,3 +1765,53 @@ information about how to avoid this problem.
2025-06-01 00:45:04 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:45:14 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 00:45:14 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:56:25 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 00:56:25 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:56:26 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:59:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:59:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 00:59:52 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:12 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:12 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:13 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:22 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:22 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:32 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:32 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:42 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:43 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:00:52 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:00:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:12 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:12 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:13 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:22 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:22 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:32 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:32 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:42 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:43 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:01:52 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:01:52 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:02 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:02 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:12 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:12 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:13 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:22 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:22 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:32 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:32 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:42 - myp.app - ERROR - Fehler beim Abrufen des System-Status: argument 1 (impossible<bad format char>)
2025-06-01 01:02:42 - myp.app - ERROR - Fehler beim Abrufen der Live-Statistiken: argument 1 (impossible<bad format char>)
2025-06-01 01:02:43 - 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 der Live-Statistiken: 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 der Live-Statistiken: argument 1 (impossible<bad format char>)

View File

@ -2602,3 +2602,44 @@
2025-06-01 00:44:23 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:44:53 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:44:53 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:56:24 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:56:24 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:56:26 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:56:26 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:56:43 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 00:56:43 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:56:43 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:56:43 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 00:56:45 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:56:45 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:56:48 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:56:48 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:56:54 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:56:54 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:56:55 - myp.printers - INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 00:57:02 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:57:02 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:57:32 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:57:32 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:58:02 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:58:02 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:58:32 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:58:32 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:59:02 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:59:02 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:59:32 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:59:32 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:59:39 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:59:39 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 00:59:41 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 00:59:41 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:00:11 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:00:11 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:00:41 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:00:41 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:01:41 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:01:41 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:02:11 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:02:11 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 01:02:41 - myp.printers - INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 01:02:41 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker

View File

@ -2746,3 +2746,8 @@
2025-06-01 00:42:25 - myp.scheduler - INFO - Scheduler gestartet
2025-06-01 00:45:17 - myp.scheduler - INFO - Scheduler-Thread beendet
2025-06-01 00:45:17 - myp.scheduler - INFO - Scheduler gestoppt
2025-06-01 00:56:22 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 00:56:23 - myp.scheduler - INFO - Scheduler-Thread gestartet
2025-06-01 00:56:23 - myp.scheduler - INFO - Scheduler gestartet
2025-06-01 01:03:04 - myp.scheduler - INFO - Scheduler-Thread beendet
2025-06-01 01:03:04 - myp.scheduler - INFO - Scheduler gestoppt

View File

@ -400,6 +400,26 @@ class User(UserMixin, Base):
return user
@classmethod
def get_by_id_cached(cls, user_id: int) -> Optional['User']:
"""
Holt einen Benutzer anhand der ID mit Caching.
"""
cache_key = get_cache_key("User", user_id, "id")
cached_user = get_cache(cache_key)
if cached_user is not None:
return cached_user
with get_cached_session() as session:
user = session.query(cls).filter(cls.id == user_id).first()
if user:
# User für 10 Minuten cachen
set_cache(cache_key, user, 600)
return user
def update_last_login(self):
"""
Aktualisiert den letzten Login-Zeitstempel.

View File

@ -8170,6 +8170,10 @@ footer {
background-color: rgb(243 244 246 / 0.8);
}
.focus\:opacity-100:focus {
opacity: 1;
}
.focus\:outline-none:focus {
outline: 2px solid transparent;
outline-offset: 2px;

View File

@ -969,36 +969,37 @@
let icon = '';
switch(type) {
case 'success':
icon = `<svg class="w-5 h-5 mr-3" fill="currentColor" viewBox="0 0 20 20">
icon = `<svg class="w-5 h-5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/>
</svg>`;
break;
case 'error':
icon = `<svg class="w-5 h-5 mr-3" fill="currentColor" viewBox="0 0 20 20">
icon = `<svg class="w-5 h-5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd"/>
</svg>`;
break;
case 'warning':
icon = `<svg class="w-5 h-5 mr-3" fill="currentColor" viewBox="0 0 20 20">
icon = `<svg class="w-5 h-5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"/>
</svg>`;
break;
case 'info':
default:
icon = `<svg class="w-5 h-5 mr-3" fill="currentColor" viewBox="0 0 20 20">
icon = `<svg class="w-5 h-5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd"/>
</svg>`;
}
// Inhalt der Flash Message
flashElement.innerHTML = `
<div class="flex items-center">
<div class="flex items-start">
${icon}
<div class="flex-1">
<p class="font-medium text-sm">${message}</p>
<div class="flex-1 min-w-0">
<p class="font-medium text-sm leading-relaxed">${message}</p>
</div>
<button class="flash-close-btn ml-4 text-current opacity-70 hover:opacity-100 transition-opacity duration-200"
onclick="closeFlashMessage('${messageId}')">
<button class="flash-close-btn ml-4 flex-shrink-0 text-current opacity-70 hover:opacity-100 transition-opacity duration-200 focus:outline-none focus:opacity-100"
onclick="closeFlashMessage('${messageId}')"
aria-label="Nachricht schließen">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
</svg>
@ -1012,6 +1013,12 @@
// Flash Messages vertikal stapeln
repositionFlashMessages();
// Einblende-Animation starten
requestAnimationFrame(() => {
flashElement.style.transform = 'translateX(0) translateY(0)';
flashElement.style.opacity = '1';
});
// Nach der angegebenen Zeit automatisch entfernen
setTimeout(() => {
closeFlashMessage(messageId);
@ -1043,10 +1050,26 @@
*/
function repositionFlashMessages() {
const flashMessages = document.querySelectorAll('.flash-message:not(.hiding)');
const gap = 12; // Abstand zwischen Messages
const startTop = 16; // Top-Offset
flashMessages.forEach((flash, index) => {
flash.style.top = `${16 + (index * 80)}px`; // 16px base + 80px pro Message
const yPosition = startTop + (index * (80 + gap)); // 80px Höhe + gap
// Position setzen
flash.style.position = 'fixed';
flash.style.top = `${yPosition}px`;
flash.style.right = '16px';
flash.style.zIndex = 50 - index; // Neueste Messages haben höheren z-index
flash.style.zIndex = 50 + (flashMessages.length - index); // Neueste Messages haben höheren z-index
flash.style.width = 'auto';
flash.style.maxWidth = '420px';
flash.style.minWidth = '320px';
// Initiale Position für Animation (nur bei neuen Messages)
if (!flash.style.transform) {
flash.style.transform = 'translateX(100%) translateY(-20px)';
flash.style.opacity = '0';
}
});
}
@ -1485,6 +1508,11 @@
* Einstellungs-Modal anzeigen
*/
showSettings() {
// Prüfen ob Modal bereits offen ist
if (document.querySelector('.dnd-modal')) {
return; // Modal bereits offen, nicht doppelt öffnen
}
const modal = document.createElement('div');
modal.className = 'dnd-modal';
modal.innerHTML = `
@ -1493,7 +1521,8 @@
<h3 class="text-lg font-semibold text-slate-900 dark:text-white">
🔕 Nicht stören
</h3>
<button class="dnd-close-btn text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200">
<button class="dnd-close-btn text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200 transition-colors duration-200"
type="button">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
</svg>
@ -1503,16 +1532,16 @@
<div class="space-y-4">
<!-- Schnell-Aktionen -->
<div class="grid grid-cols-2 gap-3">
<button class="dnd-quick-btn btn-primary" data-duration="30">
<button class="dnd-quick-btn btn-primary" data-duration="30" type="button">
30 Min
</button>
<button class="dnd-quick-btn btn-primary" data-duration="60">
<button class="dnd-quick-btn btn-primary" data-duration="60" type="button">
1 Stunde
</button>
<button class="dnd-quick-btn btn-primary" data-duration="480">
<button class="dnd-quick-btn btn-primary" data-duration="480" type="button">
8 Stunden
</button>
<button class="dnd-quick-btn btn-primary" data-duration="0">
<button class="dnd-quick-btn btn-primary" data-duration="0" type="button">
Dauerhaft
</button>
</div>
@ -1543,7 +1572,8 @@
<h4 class="text-sm font-medium text-slate-900 dark:text-white">
Unterdrückte Nachrichten (${this.suppressedMessages.length})
</h4>
<button class="dnd-clear-btn text-xs text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200">
<button class="dnd-clear-btn text-xs text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200 transition-colors duration-200"
type="button">
Alle löschen
</button>
</div>
@ -1573,11 +1603,11 @@
<!-- Aktions-Buttons -->
<div class="flex space-x-3 pt-4">
${this.isActive ? `
<button class="dnd-disable-btn btn-secondary flex-1">
<button class="dnd-disable-btn btn-secondary flex-1" type="button">
Deaktivieren
</button>
` : ''}
<button class="dnd-close-btn btn-primary flex-1">
<button class="dnd-close-btn-main btn-primary flex-1" type="button">
Schließen
</button>
</div>
@ -1585,43 +1615,91 @@
</div>
`;
// Event Listeners
// Event Listeners mit Event Delegation
modal.addEventListener('click', (e) => {
if (e.target === modal || e.target.classList.contains('dnd-close-btn')) {
modal.remove();
e.stopPropagation();
// Schließen bei Klick auf Hintergrund
if (e.target === modal) {
this.closeModal(modal);
return;
}
// Schließen-Buttons
if (e.target.closest('.dnd-close-btn') || e.target.closest('.dnd-close-btn-main')) {
e.preventDefault();
this.closeModal(modal);
return;
}
// Schnell-Aktionen
if (e.target.classList.contains('dnd-quick-btn')) {
e.preventDefault();
const duration = parseInt(e.target.dataset.duration);
if (duration === 0) {
this.enable();
} else {
this.enable(duration);
}
modal.remove();
this.closeModal(modal);
return;
}
// Deaktivieren-Button
if (e.target.classList.contains('dnd-disable-btn')) {
e.preventDefault();
this.disable();
modal.remove();
this.closeModal(modal);
return;
}
// Alle löschen
if (e.target.classList.contains('dnd-clear-btn')) {
e.preventDefault();
this.clearSuppressedMessages();
modal.remove();
this.showSettings(); // Modal neu laden
this.closeModal(modal);
// Modal neu öffnen mit aktualisierten Daten
setTimeout(() => this.showSettings(), 100);
return;
}
// Einstellungen-Checkboxen
if (e.target.classList.contains('dnd-setting')) {
const setting = e.target.dataset.setting;
this.settings[setting] = e.target.checked;
this.saveSettings();
return;
}
});
// ESC-Taste zum Schließen
const escapeHandler = (e) => {
if (e.key === 'Escape') {
this.closeModal(modal);
document.removeEventListener('keydown', escapeHandler);
}
};
document.addEventListener('keydown', escapeHandler);
// Modal zum DOM hinzufügen
document.body.appendChild(modal);
}
/**
* Modal schließen
*/
closeModal(modal) {
if (modal && modal.parentNode) {
modal.style.opacity = '0';
modal.style.pointerEvents = 'none';
setTimeout(() => {
if (modal.parentNode) {
modal.parentNode.removeChild(modal);
}
}, 200);
}
}
/**
* Unterdrückte Nachrichten löschen
*/
@ -1851,6 +1929,23 @@
});
console.log('✅ MYP UI Components erfolgreich initialisiert - Erweiterte Benutzeroberfläche mit Glassmorphism und Do Not Disturb bereit');
// Test der glasigen Flash Messages (nur im Development)
if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
// Warten auf vollständige Initialisierung, dann Test-Messages anzeigen
setTimeout(() => {
console.log('🧪 Teste glasige Flash Messages...');
showFlashMessage('Glassmorphism Flash Messages sind aktiv! ✨', 'success', 7000);
setTimeout(() => {
showFlashMessage('Do Not Disturb System ist bereit. Probieren Sie es im Footer aus! 🔕', 'info', 7000);
}, 1000);
setTimeout(() => {
showFlashMessage('Warnung: Dies ist eine Test-Nachricht für das glasige Design.', 'warning', 7000);
}, 2000);
}, 2000);
}
});
// Globale Variablen für erweiterte Flash Messages

View File

@ -628,6 +628,46 @@
</div>
</div>
<!-- Do Not Disturb Controls -->
<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>
<div class="space-y-3">
<!-- Do Not Disturb Toggle -->
<div class="flex items-center justify-between">
<span class="text-xs text-slate-600 dark:text-slate-400">Nicht stören:</span>
<button
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"
aria-label="Do Not Disturb umschalten"
data-dnd-toggle
title="Benachrichtigungen stumm schalten"
>
<!-- DND Icon (Stumm) -->
<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>
</div>
<!-- DND Status Anzeige -->
<div id="dndStatus" class="text-xs text-slate-500 dark:text-slate-400 hidden">
<span class="dnd-status-text">Inaktiv</span>
</div>
</div>
</div>
<!-- Copyright -->
<div class="flex flex-col space-y-4">
<h3 class="text-lg font-semibold text-slate-900 dark:text-white transition-colors duration-300">Rechtliches</h3>