Exportbedingungen: Vergleichsart je Feldart statt nacktem Textfeld
Bisher tippte man den Wert immer von Hand ein - auch bei einem Haken, wo man wissen musste, dass intern "true" steht, und bei einer Auswahl, wo ein Vertipper stillschweigend nichts fand. Das ist der unangenehmste Fehlschlag: Die CSV kommt einfach leer heraus, ohne Hinweis warum. Jetzt bringt jede Bedingung die passende Eingabe mit: Ja/Nein ein Haken Auswahl "ist gleich" / "ist nicht gleich" plus das Dropdown der Optionen Zahl "ist groesser =" / "ist =" / "ist kleiner =" plus Zahlenfeld Text wie bisher freie Eingabe, leer = ohne Wert Damit die Oberflaeche das kann, traegt /etiketten/spalten jetzt Art und Auswahlwerte je Feld mit - vorher gab es nur Schluessel und Titel. Der Filter bekommt dafuer ein op (=, !=, >=, <=), Vorgabe "=", damit bestehende Vorlagen unveraendert weiterlaufen. Groesser/kleiner vergleicht als Zahl und nimmt Komma wie Punkt; Zeilen ohne Wert treffen dabei NIE - "leer" ist nicht kleiner als drei, es ist unvergleichbar. Eine unbekannte Vergleichsart faellt auf "=" zurueck statt den Export zu zerreissen. Die Sicherung traegt das op mit, wie schon das Feld selbst. Sieben neue Tests, 547 gruen. Diesmal zusaetzlich in der laufenden Oberflaeche durchgespielt: Alle vier Feldarten zeigen die richtige Eingabe, der Filter wird gespeichert, und die CSV enthaelt bei "Laenge >= 5" genau die Artikel mit 5 und 12 - nicht den mit 2 und nicht den ohne Wert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
dd57d3356a
commit
8de222072c
@@ -502,7 +502,11 @@ def _vorlagen_exportieren(db: Session) -> list[dict]:
|
||||
if fd is None:
|
||||
continue
|
||||
pfad = _category_path(db, db.get(Category, fd.category_id))
|
||||
feldfilter.append({"feld": f"{pfad}::{fd.label}", "wert": bedingung["wert"]})
|
||||
feldfilter.append({
|
||||
"feld": f"{pfad}::{fd.label}",
|
||||
"op": bedingung.get("op", "="),
|
||||
"wert": bedingung["wert"],
|
||||
})
|
||||
|
||||
zeilen.append({
|
||||
"name": v.name,
|
||||
@@ -573,7 +577,11 @@ def _vorlagen_importieren(db: Session, zeilen: list, errors: list[str]) -> int:
|
||||
# Wie bei den Spalten: fehlt das Feld hier, faellt die Bedingung
|
||||
# weg statt die ganze Vorlage scheitern zu lassen.
|
||||
if fd is not None:
|
||||
feldfilter.append({"feld_id": fd.id, "wert": bedingung.get("wert", "")})
|
||||
feldfilter.append({
|
||||
"feld_id": fd.id,
|
||||
"op": bedingung.get("op", "="),
|
||||
"wert": bedingung.get("wert", ""),
|
||||
})
|
||||
|
||||
kategorie_ids = [
|
||||
pfad_zu_id[p] for p in entry.get("kategorien", []) if p in pfad_zu_id
|
||||
|
||||
Reference in New Issue
Block a user