Serverseitige Filterung für Listen-Endpunkte und Einzelabrufe in Listen-Komponenten
Server: Die list-Endpunkte für Kontakt, Projekt, Kontaktadresse und CallLog akzeptieren nun einen optionalen Query-Parameter (kunden_id bzw. projekt_id) und filtern im ORM-Query. Neue Migration V01.05 legt Indizes auf den FK-Spalten an. Client: Die fetch-Funktionen erhalten einen optionalen Parent-ID-Parameter. Die Listen-Komponenten übergeben die Parent-ID aus den Route-Params an den Server und laden nur noch benötigte Daten. Statt kompletter Eltern-Listen wird per fetchXxxById ein einzelner Datensatz für die Namensauflösung geladen. Die CallLog-Bearbeitungsmaske behält ihre ungesfilterten Dropdown-Abrufe. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
1 parent
e9a2f48ede
commit
93827dde0f
15 files changed
+189
-141
No files matched your search
@@ -80,8 +80,9 @@ def kunde_delete():
|
||||
@app.get("/xhr/kontakt/list")
|
||||
@authorisation_required([MITARBEITER, KUNDEN_MANAGER])
|
||||
def kontakt_list():
|
||||
"""Liefert alle Kontakte als Liste."""
|
||||
result = [k.to_dict() for k in kontakte.get_kontakte()]
|
||||
"""Liefert Kontakte als Liste. Optional nach kunden_id gefiltert."""
|
||||
kunden_id = request.args.get("kunden_id", type=int)
|
||||
result = [k.to_dict() for k in kontakte.get_kontakte(kunden_id)]
|
||||
return jsonify(result), 200
|
||||
|
||||
|
||||
@@ -125,8 +126,9 @@ def kontakt_delete():
|
||||
@app.get("/xhr/projekt/list")
|
||||
@authorisation_required([MITARBEITER, KUNDEN_MANAGER])
|
||||
def projekt_list():
|
||||
"""Liefert alle Projekte als Liste."""
|
||||
result = [p.to_dict() for p in projekte.get_projekte()]
|
||||
"""Liefert Projekte als Liste. Optional nach kunden_id gefiltert."""
|
||||
kunden_id = request.args.get("kunden_id", type=int)
|
||||
result = [p.to_dict() for p in projekte.get_projekte(kunden_id)]
|
||||
return jsonify(result), 200
|
||||
|
||||
|
||||
@@ -170,8 +172,9 @@ def projekt_delete():
|
||||
@app.get("/xhr/kontaktadresse/list")
|
||||
@authorisation_required([MITARBEITER, KUNDEN_MANAGER])
|
||||
def kontaktadresse_list():
|
||||
"""Liefert alle Kontaktadressen als Liste."""
|
||||
result = [k.to_dict() for k in kontaktadressen.get_kontaktadressen()]
|
||||
"""Liefert Kontaktadressen als Liste. Optional nach projekt_id gefiltert."""
|
||||
projekt_id = request.args.get("projekt_id", type=int)
|
||||
result = [k.to_dict() for k in kontaktadressen.get_kontaktadressen(projekt_id)]
|
||||
return jsonify(result), 200
|
||||
|
||||
|
||||
@@ -215,8 +218,9 @@ def kontaktadresse_delete():
|
||||
@app.get("/xhr/calllog/list")
|
||||
@authorisation_required([MITARBEITER, KUNDEN_MANAGER])
|
||||
def calllog_list():
|
||||
"""Liefert alle Gesprächsnotizen als Liste."""
|
||||
result = [l.to_dict() for l in call_logs.get_call_logs()]
|
||||
"""Liefert Gesprächsnotizen als Liste. Optional nach projekt_id gefiltert."""
|
||||
projekt_id = request.args.get("projekt_id", type=int)
|
||||
result = [l.to_dict() for l in call_logs.get_call_logs(projekt_id)]
|
||||
return jsonify(result), 200
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user