forked from Daniel/Plugin_SN_Plan41
Button Fachdaten laden hinzugefügt und angebunden (pipeline datagrabber-prüfer-datenlader-datenschreiber)
This commit is contained in:
@@ -155,99 +155,4 @@ class TabALogic:
|
||||
layer_type = get_layer_type(layer)
|
||||
return layer_type == "vector"
|
||||
|
||||
# -------------------------------
|
||||
# Validierung und Filterung von data_dict
|
||||
# -------------------------------
|
||||
|
||||
def validate_and_filter_rows(self, data_dict: DataDict) -> Tuple[DataDict, List[Any]]:
|
||||
"""
|
||||
Validiert und filtert die Zeilen aus `data_dict`.
|
||||
|
||||
Erwartete Struktur von `data_dict`: {'rows': [ {attr}, ... ]}.
|
||||
|
||||
Für jede Zeile werden die folgenden Attribute gelesen:
|
||||
ident = attr['ident'] (Pflicht)
|
||||
thema = attr['Inhalt'] (optional)
|
||||
url = attr['Link'] (Pflicht)
|
||||
stildatei = attr['Stildatei'] (optional)
|
||||
provider = attr['Provider'] (Pflicht, wird uppercased)
|
||||
|
||||
Verhalten
|
||||
- Pflichtfelder (ident, Link, Provider) müssen vorhanden und nicht-leer sein,
|
||||
sonst wird die Zeile verworfen.
|
||||
- Wenn Link nicht leer ist, wird self.link_pruefer.pruefe(url) aufgerufen.
|
||||
- Ist das Ergebnis ok: Zeile wird behalten.
|
||||
- Ist das Ergebnis nicht ok: Zeile wird verworfen; das verarbeitete
|
||||
pruef_ergebnis wird gesammelt.
|
||||
- Wenn Stildatei nicht leer ist, wird self.stil_pruefer.pruefe(stildatei) aufgerufen.
|
||||
- Ist das Ergebnis ok: der Wert bleibt erhalten.
|
||||
- Ist das Ergebnis nicht ok: das Feld `Stildatei` wird in der zurückgegebenen
|
||||
Zeile auf None gesetzt; das verarbeitete pruef_ergebnis wird gesammelt.
|
||||
- Alle pruef_ergebnis-Objekte werden an self.pruefmanager.verarbeite(...) übergeben.
|
||||
Die verarbeiteten Ergebnisse werden in der Rückgabe-Liste gesammelt.
|
||||
|
||||
Rückgabe
|
||||
- (valid_data_dict, processed_results)
|
||||
valid_data_dict: {'rows': [valid_row1, valid_row2, ...]}
|
||||
processed_results: Liste der vom Pruefmanager verarbeiteten pruef_ergebnis-Objekte
|
||||
"""
|
||||
processed_results: List[Any] = []
|
||||
valid_rows: List[Row] = []
|
||||
|
||||
# Grundstruktur prüfen
|
||||
if not isinstance(data_dict, dict):
|
||||
return {"rows": []}, processed_results
|
||||
|
||||
rows = data_dict.get("rows", [])
|
||||
if not isinstance(rows, (list, tuple)):
|
||||
return {"rows": []}, processed_results
|
||||
|
||||
for raw in rows:
|
||||
# Sicherstellen, dass raw ein Mapping ist
|
||||
if not isinstance(raw, _Mapping):
|
||||
continue
|
||||
|
||||
ident = raw.get("ident")
|
||||
inhalt = raw.get("Inhalt")
|
||||
link = raw.get("Link")
|
||||
stildatei = raw.get("Stildatei")
|
||||
provider = raw.get("Provider")
|
||||
|
||||
# Pflichtfelder prüfen
|
||||
if not ident or not link or not provider:
|
||||
continue
|
||||
|
||||
# Provider normalisieren
|
||||
provider_norm = str(provider).upper()
|
||||
|
||||
# Link prüfen
|
||||
pe_link = self.link_pruefer.pruefe(link)
|
||||
processed_link = self.pruefmanager.verarbeite(pe_link)
|
||||
if not getattr(processed_link, "ok", False):
|
||||
processed_results.append(processed_link)
|
||||
continue # Zeile verwerfen
|
||||
|
||||
# Stil prüfen (falls vorhanden)
|
||||
if stildatei:
|
||||
pe_stil = self.stil_pruefer.pruefe(stildatei)
|
||||
processed_stil = self.pruefmanager.verarbeite(pe_stil)
|
||||
if not getattr(processed_stil, "ok", False):
|
||||
processed_results.append(processed_stil)
|
||||
stildatei_value: Optional[str] = None
|
||||
else:
|
||||
stildatei_value = stildatei
|
||||
else:
|
||||
stildatei_value = None
|
||||
|
||||
# Validierte Zeile zusammenbauen
|
||||
validated_row: Row = {
|
||||
"ident": ident,
|
||||
"Inhalt": inhalt,
|
||||
"Link": link,
|
||||
"Stildatei": stildatei_value,
|
||||
"Provider": provider_norm,
|
||||
}
|
||||
valid_rows.append(validated_row)
|
||||
|
||||
result_dict: DataDict = {"rows": valid_rows}
|
||||
return result_dict, processed_results
|
||||
|
||||
Reference in New Issue
Block a user