""" REST-Endpunkte für die CRM-Domain. Die Endpunkte orientieren sich 1:1 an den clientseitig definierten Pfaden (siehe Client/models/*.ts). Pro Entität gibt es einen zusammenhängenden Block mit den Aktionen list/get/create/update/delete. Die Autorisierung erfolgt über den Decorator authorisation_required; AppAdmin und SysAdmin sind darin implizit immer erlaubt. Die Rollen Mitarbeiter und KundenManager werden aus crm.model importiert. :author: Mistral Vibe :date: 2026-09-02 :version: 1.0 """ from flask import current_app as app from flask import jsonify, request from auth.decorators import authorisation_required from crm.model import KUNDEN_MANAGER, MITARBEITER from crm.model import kunde as kunden print("crm-routes") # --------------------------------------------------------------------------- # # Kunde # # --------------------------------------------------------------------------- # @app.get("/xhr/kunde/list") @authorisation_required([MITARBEITER, KUNDEN_MANAGER]) def kunde_list(): """Liefert alle Kunden als Liste.""" result = [k.to_dict() for k in kunden.get_kunden()] return jsonify(result), 200 @app.get("/xhr/kunde/get") @authorisation_required([MITARBEITER, KUNDEN_MANAGER]) def kunde_get(): """Liefert einen einzelnen Kunden anhand seiner ID (Query-Param id).""" kunde = kunden.get_kunde(int(request.args.get("id"))) return jsonify(kunde.to_dict()), 200 @app.post("/xhr/kunde/create") @authorisation_required([KUNDEN_MANAGER]) def kunde_create(): """Legt einen neuen Kunden an. ID wird serverseitig vergeben.""" kunde = kunden.create_kunde(request.json) return jsonify(kunde.to_dict()), 200 @app.put("/xhr/kunde/update") @authorisation_required([KUNDEN_MANAGER]) def kunde_update(): """Aktualisiert einen bestehenden Kunden.""" kunde = kunden.update_kunde(request.json) return jsonify(kunde.to_dict()), 200 @app.delete("/xhr/kunde/delete") @authorisation_required([KUNDEN_MANAGER]) def kunde_delete(): """Löscht einen Kunden anhand seiner ID (Query-Param id).""" kunden.delete_kunde(int(request.args.get("id"))) return jsonify({}), 200 print("########## crm.routes importiert")