In Funktion 'get_sivas_bom' wird nun in Fällen, bei denen keine JSON erzeugt werden, ein ValueError geschmissen, der ggf. später bei Bedarf per Exception gehandelt werden kann + In Funktion 'get_sivas_teilestamm' wird nun geprüft, ob das Tool 'KSbExcelExportSivasTeilestamm.exe' von Hr. Jakob mit den angegebenen Nummern tatsächlich valide CSV's generiert hat. Das ist deshalb von Bedeutung, weil das Tool auch dann CSV's erzeugt, wenn die Werte, die man per Flag '-teilenr' bereitstellt, nicht als Nummer in SIVAS vorliegen, wie z.B. 'abc'
This commit is contained in:
+17
-8
@@ -4,6 +4,7 @@ import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import csv
|
||||
|
||||
|
||||
"""
|
||||
@@ -88,9 +89,7 @@ def get_sivas_bom(sivas_id, out_dir=os.environ.get('CREMIG_DATA')):
|
||||
subprocess.run(f'{sivas2json_exe_path} -o {out_dir} --format json -number "{sivas_id}"')
|
||||
|
||||
if not os.path.isfile(os.path.join(out_dir, sivas_id + ".json")):
|
||||
print(f"Fehler - Konnte {sivas_id}.json nicht erzeugen. Es handelt sich evtl. um eine Nummer ohne Stückliste. Andernfalls prüfen, ob Teilenummer korrekt geschrieben wurde.")
|
||||
return False
|
||||
return True
|
||||
raise ValueError(f"{sivas_id}.json konnte nicht erzeugt werden. Evtl. Nummer ohne Stückliste.")
|
||||
|
||||
def get_sivas_teilestamm(sivas_ids, out_dir=os.environ.get('CREMIG_DATA'), overwrite=True):
|
||||
|
||||
@@ -112,19 +111,29 @@ def get_sivas_teilestamm(sivas_ids, out_dir=os.environ.get('CREMIG_DATA'), overw
|
||||
|
||||
ids_to_generate = []
|
||||
for id in sivas_ids:
|
||||
out_file = os.path.join(out_dir, id + ".csv")
|
||||
if not overwrite and os.path.isfile(out_file):
|
||||
if not overwrite and os.path.isfile(os.path.join(out_dir, id + ".csv")):
|
||||
continue
|
||||
ids_to_generate.append(f'"{id}"') # Anführungszeichen erforderlich, damit Art.Nr. mit Leerzeichen, z.B. "TOS Auswahl ILS" funktionieren
|
||||
ids_to_generate.append(id)
|
||||
|
||||
if len(ids_to_generate) == 0:
|
||||
print("CSV-Datei(en) existieren bereits oder angegebene Teilenummer(n) sind bereits migriert")
|
||||
return
|
||||
|
||||
ids_to_generate = ",".join(ids_to_generate)
|
||||
ids_to_generate_str = ",".join([f'"{id}"' for id in ids_to_generate]) # Anführungszeichen erforderlich, damit Art.Nr. mit Leerzeichen, z.B. "TOS Auswahl ILS" funktionieren
|
||||
|
||||
os.environ["SIVAS_EXCEL_EXPORT_DIR"] = out_dir # Umgebungsvariable legt Ausgabeverzeichnis der CSV-Dateien im Programm 'KSbExcelExportSivasTeilestamm' fest. Der Variablenname ist durch genanntes Programm vorgegeben, siehe help-Text des Programms!
|
||||
print(f"Erstelle CSV(s) mit Teilestamminformationen...")
|
||||
subprocess.run(f'{sivas_teilestamm_exe} -teilenr={ids_to_generate} -open_target_dir=n')
|
||||
subprocess.run(f'{sivas_teilestamm_exe} -teilenr={ids_to_generate_str} -open_target_dir=n')
|
||||
|
||||
# Prüft Existenz der angegebenen SIVAS-Nummern, indem geschaut wird, ob die CSV-Dateien 2 Zeilen aufweisen
|
||||
# Nicht über Returncode des Subprocess ermittelbar, da dieser immer 0 ist, auch wenn die Nr. nicht in SIVAS existiert
|
||||
for id in ids_to_generate:
|
||||
csv_path = os.path.join(out_dir, id + ".csv")
|
||||
with open(csv_path, encoding="utf-8", newline="") as csv_file:
|
||||
csv_data = csv.reader(csv_file, delimiter=";")
|
||||
line_nums = sum(1 for row in csv_data)
|
||||
if line_nums != 2:
|
||||
raise ValueError(f"SIVAS-Teilenummer '{id}' existiert nicht! Bitte prüfen, ob Nummer korrekt geschrieben wurde!")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user