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
+15
-3
@@ -1124,17 +1124,29 @@ class SpalteOut(BaseModel):
|
||||
|
||||
schluessel: str
|
||||
titel: str
|
||||
# Nur bei eigenen Feldern gefuellt. Die Oberflaeche braucht beides, um beim
|
||||
# Wertefilter die passende Eingabe anzubieten (Checkbox, Auswahl, Zahl).
|
||||
typ: str = ""
|
||||
optionen: list[str] = []
|
||||
|
||||
|
||||
class FeldFilter(BaseModel):
|
||||
"""Eine Bedingung auf einem eigenen Feld.
|
||||
|
||||
Mehrere Bedingungen muessen alle zutreffen. Verglichen wird genau, aber
|
||||
ohne Ruecksicht auf Gross-/Kleinschreibung. Ein leerer ``wert`` trifft die
|
||||
Zeilen OHNE Wert in diesem Feld.
|
||||
Mehrere Bedingungen muessen alle zutreffen.
|
||||
|
||||
``op`` ist die Vergleichsart. Vorgabe ist ``=``, damit aeltere Vorlagen
|
||||
ohne Angabe unveraendert weiterlaufen:
|
||||
|
||||
* ``=`` / ``!=`` – genau gleich bzw. ungleich, ohne Ruecksicht auf
|
||||
Gross-/Kleinschreibung. Ein leerer ``wert`` trifft bei ``=`` die Zeilen
|
||||
OHNE Wert in diesem Feld.
|
||||
* ``>=`` / ``<=`` – nur bei Zahlenfeldern sinnvoll; Zeilen ohne Wert oder
|
||||
mit unlesbarer Zahl treffen nie.
|
||||
"""
|
||||
|
||||
feld_id: int
|
||||
op: str = Field(default="=", pattern=r"^(=|!=|>=|<=)$")
|
||||
wert: str = ""
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user