chore: Änderungen commited
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user