📝 🚀 "Refactor backend structure
This commit is contained in:
parent
4dd3c4b1b1
commit
00c2cc3f27
883
backend/app.py
883
backend/app.py
File diff suppressed because it is too large
Load Diff
534
backend/blueprints/jobs.py
Normal file
534
backend/blueprints/jobs.py
Normal 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.
1
backend/docs/DASHBOARD_REFRESH_IMPLEMENTATION.md
Normal file
1
backend/docs/DASHBOARD_REFRESH_IMPLEMENTATION.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
1
backend/docs/ERROR_LOG_DASHBOARD_REFRESH.md
Normal file
1
backend/docs/ERROR_LOG_DASHBOARD_REFRESH.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
1
backend/docs/FEHLER_BEHOBEN_FORMAT_STRING_UND_SQLITE.md
Normal file
1
backend/docs/FEHLER_BEHOBEN_FORMAT_STRING_UND_SQLITE.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
@ -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 - 🧹 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 - 📝 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: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 - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
|
||||||
|
* 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 - [33mPress CTRL+C to quit[0m
|
||||||
|
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] "[32mGET /api/session/status HTTP/1.1[0m" 302 -
|
||||||
|
2025-06-01 00:56:24 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:24] "[32mGET /auth/login?next=/api/session/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 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] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:26 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:26] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:43 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:43] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 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] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 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] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 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] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/admin.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/admin-system.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/admin-live.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/js/admin-dashboard.js HTTP/1.1[0m" 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] "[32mGET /api/stats HTTP/1.1[0m" 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] "[32mGET /auth/login?next=/api/stats HTTP/1.1[0m" 302 -
|
||||||
|
2025-06-01 00:56:45 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:45] "[36mGET /static/manifest.json HTTP/1.1[0m" 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] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/js/admin-guest-requests.js HTTP/1.1[0m" 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] "[32mGET /api/admin/guest-requests HTTP/1.1[0m" 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] "[32mGET /auth/login?next=/api/admin/guest-requests HTTP/1.1[0m" 302 -
|
||||||
|
2025-06-01 00:56:48 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:48] "[36mGET /static/manifest.json HTTP/1.1[0m" 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] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/admin.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/admin-system.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/admin-live.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/js/admin-dashboard.js HTTP/1.1[0m" 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] "[32mGET /api/notifications HTTP/1.1[0m" 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] "[32mGET /api/stats HTTP/1.1[0m" 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] "[32mGET /auth/login?next=/api/notifications HTTP/1.1[0m" 302 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[32mGET /auth/login?next=/api/stats HTTP/1.1[0m" 302 -
|
||||||
|
2025-06-01 00:56:54 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:54] "[36mGET /static/manifest.json HTTP/1.1[0m" 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] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 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] "[33mGET /api/jobs HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:55 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:55] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:57 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:57] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/fullcalendar/main.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/fullcalendar/timegrid.min.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/fullcalendar/interaction.min.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/fullcalendar/list.min.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/fullcalendar/daygrid.min.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/fullcalendar/core.min.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:56:58 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:56:58] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:57:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:57:02] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 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] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 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] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 404 -
|
||||||
|
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 404 -
|
||||||
|
2025-06-01 00:58:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:02] "[32mGET /api/notifications HTTP/1.1[0m" 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] "[32mGET /auth/login?next=/api/notifications HTTP/1.1[0m" 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] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 404 -
|
||||||
|
2025-06-01 00:58:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:58:32] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 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] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 404 -
|
||||||
|
2025-06-01 00:59:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:02] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 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] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 404 -
|
||||||
|
2025-06-01 00:59:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:32] "[33mPOST /api/dashboard/refresh HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/admin.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/admin-system.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/admin-live.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[36mGET /static/js/admin-dashboard.js HTTP/1.1[0m" 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] "[32mGET /api/user/settings HTTP/1.1[0m" 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] "[32mGET /api/stats HTTP/1.1[0m" 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] "[32mGET /auth/login?next=/api/user/settings HTTP/1.1[0m" 302 -
|
||||||
|
2025-06-01 00:59:39 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:39] "[32mGET /auth/login?next=/api/stats HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 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] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[36mGET /static/css/tailwind.min.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/ui-components.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/css/professional-theme.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/css/components.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/css/optimization-animations.css HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/offline-app.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/optimization-features.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/debug-fix.js HTTP/1.1[0m" 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] "[36mGET /static/js/global-refresh-functions.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/event-handlers.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/dark-mode-fix.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/job-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/csp-violation-handler.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/printer_monitor.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/notifications.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/session-manager.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/auto-logout.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/admin.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/admin-system.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/admin-live.js HTTP/1.1[0m" 304 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[36mGET /static/js/admin-dashboard.js HTTP/1.1[0m" 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] "[32mGET /api/user/settings HTTP/1.1[0m" 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] "[32mGET /api/admin/system-health HTTP/1.1[0m" 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] "[32mGET /auth/login?next=/api/user/settings HTTP/1.1[0m" 302 -
|
||||||
|
2025-06-01 00:59:41 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:41] "[32mGET /auth/login?next=/api/admin/system-health HTTP/1.1[0m" 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] "[36mGET /static/manifest.json HTTP/1.1[0m" 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] "[36mGET /static/icons/icon-144x144.png HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 00:59:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 00:59:52] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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>)
|
||||||
|
[0m" 500 -
|
||||||
|
2025-06-01 01:00:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:02] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:00:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:22] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:00:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:32] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:00:42 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:42] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:00:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:00:52] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:01:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:02] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[32mGET /api/printers/monitor/live-status?use_cache=true HTTP/1.1[0m" 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] "[32mGET /auth/login?next=/api/printers/monitor/live-status?use_cache%3Dtrue HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:01:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:22] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:01:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:01:32] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:02:22 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:22] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:02:32 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:32] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:02:52 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:02:52] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 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] "[35m[1mGET /api/admin/system/status HTTP/1.1[0m" 500 -
|
||||||
|
2025-06-01 01:03:02 - werkzeug - INFO - 127.0.0.1 - - [01/Jun/2025 01:03:02] "[35m[1mGET /api/admin/stats/live HTTP/1.1[0m" 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...
|
||||||
|
@ -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: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 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: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>)
|
||||||
|
@ -2602,3 +2602,44 @@
|
|||||||
2025-06-01 00:44:23 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
|
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 von Benutzer Administrator (ID: 1)
|
||||||
2025-06-01 00:44:53 - myp.printers - INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
|
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
|
||||||
|
@ -2746,3 +2746,8 @@
|
|||||||
2025-06-01 00:42:25 - myp.scheduler - INFO - Scheduler gestartet
|
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-Thread beendet
|
||||||
2025-06-01 00:45:17 - myp.scheduler - INFO - Scheduler gestoppt
|
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
|
||||||
|
@ -400,6 +400,26 @@ class User(UserMixin, Base):
|
|||||||
|
|
||||||
return user
|
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):
|
def update_last_login(self):
|
||||||
"""
|
"""
|
||||||
Aktualisiert den letzten Login-Zeitstempel.
|
Aktualisiert den letzten Login-Zeitstempel.
|
||||||
|
@ -8170,6 +8170,10 @@ footer {
|
|||||||
background-color: rgb(243 244 246 / 0.8);
|
background-color: rgb(243 244 246 / 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.focus\:opacity-100:focus {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
.focus\:outline-none:focus {
|
.focus\:outline-none:focus {
|
||||||
outline: 2px solid transparent;
|
outline: 2px solid transparent;
|
||||||
outline-offset: 2px;
|
outline-offset: 2px;
|
||||||
|
@ -969,36 +969,37 @@
|
|||||||
let icon = '';
|
let icon = '';
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case 'success':
|
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"/>
|
<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>`;
|
</svg>`;
|
||||||
break;
|
break;
|
||||||
case 'error':
|
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"/>
|
<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>`;
|
</svg>`;
|
||||||
break;
|
break;
|
||||||
case 'warning':
|
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"/>
|
<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>`;
|
</svg>`;
|
||||||
break;
|
break;
|
||||||
case 'info':
|
case 'info':
|
||||||
default:
|
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"/>
|
<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>`;
|
</svg>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inhalt der Flash Message
|
// Inhalt der Flash Message
|
||||||
flashElement.innerHTML = `
|
flashElement.innerHTML = `
|
||||||
<div class="flex items-center">
|
<div class="flex items-start">
|
||||||
${icon}
|
${icon}
|
||||||
<div class="flex-1">
|
<div class="flex-1 min-w-0">
|
||||||
<p class="font-medium text-sm">${message}</p>
|
<p class="font-medium text-sm leading-relaxed">${message}</p>
|
||||||
</div>
|
</div>
|
||||||
<button class="flash-close-btn ml-4 text-current opacity-70 hover:opacity-100 transition-opacity duration-200"
|
<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}')">
|
onclick="closeFlashMessage('${messageId}')"
|
||||||
|
aria-label="Nachricht schließen">
|
||||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<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"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
|
||||||
</svg>
|
</svg>
|
||||||
@ -1012,6 +1013,12 @@
|
|||||||
// Flash Messages vertikal stapeln
|
// Flash Messages vertikal stapeln
|
||||||
repositionFlashMessages();
|
repositionFlashMessages();
|
||||||
|
|
||||||
|
// Einblende-Animation starten
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
flashElement.style.transform = 'translateX(0) translateY(0)';
|
||||||
|
flashElement.style.opacity = '1';
|
||||||
|
});
|
||||||
|
|
||||||
// Nach der angegebenen Zeit automatisch entfernen
|
// Nach der angegebenen Zeit automatisch entfernen
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
closeFlashMessage(messageId);
|
closeFlashMessage(messageId);
|
||||||
@ -1043,10 +1050,26 @@
|
|||||||
*/
|
*/
|
||||||
function repositionFlashMessages() {
|
function repositionFlashMessages() {
|
||||||
const flashMessages = document.querySelectorAll('.flash-message:not(.hiding)');
|
const flashMessages = document.querySelectorAll('.flash-message:not(.hiding)');
|
||||||
|
const gap = 12; // Abstand zwischen Messages
|
||||||
|
const startTop = 16; // Top-Offset
|
||||||
|
|
||||||
flashMessages.forEach((flash, index) => {
|
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.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
|
* Einstellungs-Modal anzeigen
|
||||||
*/
|
*/
|
||||||
showSettings() {
|
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');
|
const modal = document.createElement('div');
|
||||||
modal.className = 'dnd-modal';
|
modal.className = 'dnd-modal';
|
||||||
modal.innerHTML = `
|
modal.innerHTML = `
|
||||||
@ -1493,7 +1521,8 @@
|
|||||||
<h3 class="text-lg font-semibold text-slate-900 dark:text-white">
|
<h3 class="text-lg font-semibold text-slate-900 dark:text-white">
|
||||||
🔕 Nicht stören
|
🔕 Nicht stören
|
||||||
</h3>
|
</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">
|
<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"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
|
||||||
</svg>
|
</svg>
|
||||||
@ -1503,16 +1532,16 @@
|
|||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<!-- Schnell-Aktionen -->
|
<!-- Schnell-Aktionen -->
|
||||||
<div class="grid grid-cols-2 gap-3">
|
<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
|
30 Min
|
||||||
</button>
|
</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
|
1 Stunde
|
||||||
</button>
|
</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
|
8 Stunden
|
||||||
</button>
|
</button>
|
||||||
<button class="dnd-quick-btn btn-primary" data-duration="0">
|
<button class="dnd-quick-btn btn-primary" data-duration="0" type="button">
|
||||||
Dauerhaft
|
Dauerhaft
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -1543,7 +1572,8 @@
|
|||||||
<h4 class="text-sm font-medium text-slate-900 dark:text-white">
|
<h4 class="text-sm font-medium text-slate-900 dark:text-white">
|
||||||
Unterdrückte Nachrichten (${this.suppressedMessages.length})
|
Unterdrückte Nachrichten (${this.suppressedMessages.length})
|
||||||
</h4>
|
</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
|
Alle löschen
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -1573,11 +1603,11 @@
|
|||||||
<!-- Aktions-Buttons -->
|
<!-- Aktions-Buttons -->
|
||||||
<div class="flex space-x-3 pt-4">
|
<div class="flex space-x-3 pt-4">
|
||||||
${this.isActive ? `
|
${this.isActive ? `
|
||||||
<button class="dnd-disable-btn btn-secondary flex-1">
|
<button class="dnd-disable-btn btn-secondary flex-1" type="button">
|
||||||
Deaktivieren
|
Deaktivieren
|
||||||
</button>
|
</button>
|
||||||
` : ''}
|
` : ''}
|
||||||
<button class="dnd-close-btn btn-primary flex-1">
|
<button class="dnd-close-btn-main btn-primary flex-1" type="button">
|
||||||
Schließen
|
Schließen
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -1585,43 +1615,91 @@
|
|||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
// Event Listeners
|
// Event Listeners mit Event Delegation
|
||||||
modal.addEventListener('click', (e) => {
|
modal.addEventListener('click', (e) => {
|
||||||
if (e.target === modal || e.target.classList.contains('dnd-close-btn')) {
|
e.stopPropagation();
|
||||||
modal.remove();
|
|
||||||
|
// 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')) {
|
if (e.target.classList.contains('dnd-quick-btn')) {
|
||||||
|
e.preventDefault();
|
||||||
const duration = parseInt(e.target.dataset.duration);
|
const duration = parseInt(e.target.dataset.duration);
|
||||||
if (duration === 0) {
|
if (duration === 0) {
|
||||||
this.enable();
|
this.enable();
|
||||||
} else {
|
} else {
|
||||||
this.enable(duration);
|
this.enable(duration);
|
||||||
}
|
}
|
||||||
modal.remove();
|
this.closeModal(modal);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deaktivieren-Button
|
||||||
if (e.target.classList.contains('dnd-disable-btn')) {
|
if (e.target.classList.contains('dnd-disable-btn')) {
|
||||||
|
e.preventDefault();
|
||||||
this.disable();
|
this.disable();
|
||||||
modal.remove();
|
this.closeModal(modal);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Alle löschen
|
||||||
if (e.target.classList.contains('dnd-clear-btn')) {
|
if (e.target.classList.contains('dnd-clear-btn')) {
|
||||||
|
e.preventDefault();
|
||||||
this.clearSuppressedMessages();
|
this.clearSuppressedMessages();
|
||||||
modal.remove();
|
this.closeModal(modal);
|
||||||
this.showSettings(); // Modal neu laden
|
// Modal neu öffnen mit aktualisierten Daten
|
||||||
|
setTimeout(() => this.showSettings(), 100);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Einstellungen-Checkboxen
|
||||||
if (e.target.classList.contains('dnd-setting')) {
|
if (e.target.classList.contains('dnd-setting')) {
|
||||||
const setting = e.target.dataset.setting;
|
const setting = e.target.dataset.setting;
|
||||||
this.settings[setting] = e.target.checked;
|
this.settings[setting] = e.target.checked;
|
||||||
this.saveSettings();
|
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);
|
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
|
* 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');
|
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
|
// Globale Variablen für erweiterte Flash Messages
|
||||||
|
@ -628,6 +628,46 @@
|
|||||||
</div>
|
</div>
|
||||||
</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 -->
|
<!-- Copyright -->
|
||||||
<div class="flex flex-col space-y-4">
|
<div class="flex flex-col space-y-4">
|
||||||
<h3 class="text-lg font-semibold text-slate-900 dark:text-white transition-colors duration-300">Rechtliches</h3>
|
<h3 class="text-lg font-semibold text-slate-900 dark:text-white transition-colors duration-300">Rechtliches</h3>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user