"feat: Enhanced error handling in COMMON_ERRORS.md and app.py"

This commit is contained in:
2025-05-26 12:56:10 +02:00
parent 4245f48caa
commit 2643ef1814
2 changed files with 71 additions and 39 deletions

View File

@@ -718,57 +718,25 @@ def finish_job(job_id):
@app.route("/api/printers", methods=["GET"])
@login_required
def get_printers():
"""Gibt alle Drucker mit aktuellem Status zurück (mit Ping-Check und 7-Sekunden-Timeout)."""
"""Gibt alle Drucker zurück - ohne Status-Check für schnelleres Laden."""
db_session = get_db_session()
try:
printers = db_session.query(Printer).all()
# Drucker-Daten für Status-Check vorbereiten
printer_data = []
for printer in printers:
printer_data.append({
'id': printer.id,
'name': printer.name,
'ip_address': printer.ip_address,
'location': printer.location
})
# Status aller Drucker parallel überprüfen mit 7-Sekunden-Timeout
printers_logger.info(f"Starte Drucker-Status-Check für {len(printer_data)} Drucker")
status_results = check_multiple_printers_status(printer_data, timeout=7)
# Drucker-Liste mit aktuellem Status erstellen
# Drucker-Liste ohne Status-Check erstellen (für schnelleres Laden)
printer_list = []
for printer in printers:
if printer.id in status_results:
status, active = status_results[printer.id]
# Mapping für Frontend-Kompatibilität
if status == "online":
frontend_status = "available"
else:
frontend_status = "offline"
else:
# Fallback falls kein Ergebnis vorliegt
frontend_status = "offline"
active = False
# Status in der Datenbank aktualisieren
printer.status = frontend_status
printer.active = active
printer_data = printer.to_dict()
printer_data["status"] = frontend_status
printer_data["active"] = active
printer_data["last_checked"] = datetime.now().isoformat()
# Verwende den gespeicherten Status oder setze auf "offline" als Standard
printer_data["status"] = printer.status if printer.status else "offline"
printer_data["active"] = printer.active if printer.active is not None else False
printer_data["last_checked"] = None # Wird beim Status-Check gesetzt
printer_list.append(printer_data)
# Speichere Updates
db_session.commit()
db_session.close()
online_count = len([p for p in printer_list if p["status"] == "available"])
printers_logger.info(f"Drucker-Status-Check abgeschlossen: {online_count} von {len(printer_list)} Drucker verfügbar")
printers_logger.info(f"Drucker-Liste geladen: {len(printer_list)} Drucker")
return jsonify({
"printers": printer_list