chore: Änderungen commited

This commit is contained in:
2025-06-16 08:49:18 +02:00
parent 4491156902
commit 18126335ac
5 changed files with 249 additions and 16 deletions

View File

@@ -215,10 +215,17 @@ def get_printer_status():
Liefert den aktuellen Status aller Drucker.
Dieser Endpunkt ist kompatibel mit dem Frontend printer_monitor.js
Query-Parameter:
- force_refresh: true = Cache umgehen und echte Netzwerk-Tests (default: false)
Returns:
JSON mit Status aller Drucker
"""
printers_logger.info(f"🔄 Status-Abfrage von Benutzer {current_user.name} (ID: {current_user.id})")
# Force-Refresh Parameter prüfen
force_refresh = request.args.get('force_refresh', 'false').lower() == 'true'
refresh_type = "Force-Refresh" if force_refresh else "Normal"
printers_logger.info(f"🔄 {refresh_type} Status-Abfrage von Benutzer {current_user.name} (ID: {current_user.id})")
try:
# Nur TBA Marienfelde Drucker aus Datenbank holen
@@ -260,11 +267,11 @@ def get_printer_status():
'created_at': printer.created_at.isoformat() if printer.created_at else None
}
# LIVE TAPO-STATUS ABRUFEN (Kernlogik)
# LIVE TAPO-STATUS ABRUFEN (Kernlogik mit Force-Refresh)
if printer.plug_ip and tapo_manager:
try:
# Live-Status über Tapo-Manager abrufen
live_status = tapo_manager.get_printer_status(printer.id)
# Live-Status über Tapo-Manager abrufen (mit Cache-Bypass bei force_refresh)
live_status = tapo_manager.get_printer_status(printer.id, force_refresh=force_refresh)
# Status basierend auf Tapo-Erreichbarkeit und Schaltzustand
plug_reachable = live_status.get('plug_reachable', False)
@@ -470,6 +477,59 @@ def control_printer_power(printer_id):
"error": f"Allgemeiner Fehler: {str(e)}"
}), 500
@printers_blueprint.route("/force-refresh", methods=["POST"])
@login_required
@measure_execution_time(logger=printers_logger, task_name="API-Force-Refresh-Alle-Drucker")
def force_refresh_all_printer_status():
"""
Forciert komplette Netzwerk-Neuprüfung aller Drucker-Status.
Invalidiert alle Caches und führt echte Netzwerk-Tests durch.
Für Verwendung nach Netzwerkwechseln oder bei Cache-Problemen.
Returns:
JSON mit Force-Refresh-Ergebnissen
"""
printers_logger.info(f"🔄 Force-Refresh aller Drucker von Benutzer {current_user.name} (ID: {current_user.id})")
try:
# Tapo Status Manager für Force-Refresh verwenden
from utils.tapo_status_manager import tapo_status_manager
# Force-Network-Refresh durchführen
refresh_results = tapo_status_manager.force_network_refresh()
if refresh_results.get("success", False):
printers_logger.info(f"✅ Force-Refresh erfolgreich: {refresh_results.get('printers_refreshed', 0)} Drucker aktualisiert")
return jsonify({
"success": True,
"message": "Alle Drucker-Status erfolgreich aktualisiert",
"refresh_results": refresh_results,
"performed_by": {
"id": current_user.id,
"name": current_user.name
},
"timestamp": datetime.now().isoformat()
})
else:
printers_logger.error(f"❌ Force-Refresh fehlgeschlagen: {refresh_results.get('error', 'Unbekannter Fehler')}")
return jsonify({
"success": False,
"error": "Force-Refresh fehlgeschlagen",
"details": refresh_results,
"timestamp": datetime.now().isoformat()
}), 500
except Exception as e:
printers_logger.error(f"❌ Allgemeiner Fehler bei Force-Refresh: {str(e)}")
return jsonify({
"success": False,
"error": f"Fehler beim Force-Refresh: {str(e)}",
"timestamp": datetime.now().isoformat()
}), 500
@printers_blueprint.route("/test/socket/<int:printer_id>", methods=["GET"])
@login_required
@require_permission(Permission.ADMIN)