"feat: Enhanced error handling in COMMON_ERRORS.md and app.py"
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user