diff --git a/README.md b/README.md new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/README.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/app/app.py b/backend/app/app.py index 394120c2..afa7d487 100644 --- a/backend/app/app.py +++ b/backend/app/app.py @@ -590,14 +590,38 @@ def get_printers(): try: printers = db_session.query(Printer).all() - printer_list = [printer.to_dict() for printer in printers] + # Optimierte Drucker-Liste mit schneller Status-Bestimmung + printer_list = [] + for printer in printers: + # Bestimme Status basierend auf hardkodierten Druckern + printer_config = PRINTERS.get(printer.name) + if printer_config: + status = "available" # Drucker verfügbar + active = True + else: + status = "offline" + active = False + + # Aktualisiere Status in der Datenbank + printer.status = status + printer.active = active + + printer_data = printer.to_dict() + printer_data["status"] = status + printer_data["active"] = active + printer_list.append(printer_data) + + # Speichere Updates + db_session.commit() db_session.close() + return jsonify({ "printers": printer_list }) except Exception as e: printers_logger.error(f"Fehler beim Abrufen der Drucker: {str(e)}") + db_session.rollback() db_session.close() return jsonify({"error": "Interner Serverfehler"}), 500 @@ -715,23 +739,47 @@ def get_activity(): @app.route("/api/printers/status", methods=["GET"]) @login_required def get_printers_status(): - """Gibt den Status aller Drucker zurück.""" + """Gibt den Status aller Drucker zurück - optimiert für schnelle Antwort.""" db_session = get_db_session() try: printers = db_session.query(Printer).all() - status_data = [ - { + + # Schnelle Status-Bestimmung basierend auf hardkodierten Druckern + status_data = [] + for printer in printers: + # Bestimme Status basierend auf IP-Adresse aus der Konfiguration + printer_config = PRINTERS.get(printer.name) + if printer_config: + # Drucker ist in der Konfiguration -> als online betrachten + status = "online" + active = True + else: + # Drucker nicht in Konfiguration -> offline + status = "offline" + active = False + + # Aktualisiere den Status in der Datenbank für Konsistenz + printer.status = status + printer.active = active + + status_data.append({ "id": printer.id, "name": printer.name, - "status": printer.status, - "active": printer.active - } - for printer in printers - ] + "status": status, + "active": active, + "ip_address": printer.ip_address, + "location": printer.location + }) + + # Speichere die aktualisierten Status + db_session.commit() db_session.close() + return jsonify(status_data) except Exception as e: + db_session.rollback() db_session.close() + printers_logger.error(f"Fehler beim Abrufen des Drucker-Status: {str(e)}") return jsonify({"error": str(e)}), 500 @app.route("/api/jobs/current", methods=["GET"]) diff --git a/backend/app/blueprints/user.py b/backend/app/blueprints/user.py index 0d8ceefe..9b34f48e 100644 --- a/backend/app/blueprints/user.py +++ b/backend/app/blueprints/user.py @@ -94,6 +94,12 @@ def update_profile(): finally: db_session.close() +@user_bp.route("/api/update-settings", methods=["POST"]) +@login_required +def api_update_settings(): + """API-Endpunkt für Einstellungen-Updates (JSON)""" + return update_settings() + @user_bp.route("/update-settings", methods=["POST"]) @login_required def update_settings(): diff --git a/backend/app/templates/admin.html b/backend/app/templates/admin.html index e165c08b..f8e433b8 100644 --- a/backend/app/templates/admin.html +++ b/backend/app/templates/admin.html @@ -1,411 +1,599 @@ {% extends "base.html" %} -{% block title %}Admin Panel - MYP Platform{% endblock %} +{% block title %}Admin Panel - Mercedes-Benz MYP Platform{% endblock %} {% block head %} {{ super() }} + {% endblock %} {% block content %} -