From 9bd38708ffb2fadb2ac01bab966df72cf9521dfc Mon Sep 17 00:00:00 2001 From: lertlmaier Date: Fri, 13 Jun 2025 13:42:57 +0200 Subject: [PATCH] =?UTF-8?q?Validierungs-Logik=20implementiert,=20welche=20?= =?UTF-8?q?die=20gegebenen=20Configs=20auf=20Konsistenz=20pr=C3=BCft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/getpositions.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lib/getpositions.py b/lib/getpositions.py index db39809..ad2a22c 100644 --- a/lib/getpositions.py +++ b/lib/getpositions.py @@ -418,6 +418,43 @@ def dxf_is_binary(dxf_path): header = f.read(22) return b'AutoCAD Binary DXF' in header +def validate_configs(): + errors= [] + + print("Validating given configs: Checking for inconsistency.") + + # 1. Alle Prefixes aus Routing_include müssen in Cable_Mapping stehen (nur BMK.cfg) + if config_BMK.has_section("Routing-Include") and config_BMK.has_section("Cable-Mapping"): + for prefix in config_BMK.options("Routing-Include"): + if prefix not in config_BMK["Cable-Mapping"]: + errors.append(f"No Cable-Mapping for Prefix '{prefix}' within 'Routing-Include'") + + # 2. Jeder Eintrag in Cable-Mapping → Sektionen in kabel.cfg prüfen (Abgleich BMK.cfg und kabel.cfg) + if config_BMK.has_section("Cable-Mapping"): + for mapping_key, value in config_BMK.items("Cable-Mapping"): + sections = [s.strip() for s in value.split(",")] + for section in sections: + if not config_cables.has_section(section): + errors.append(f"Cable-Section '{section}' from Cable-Mapping ({mapping_key}) missing in kabel.cfg") + + # 3. Länge in Length-Adjustments muss float >= 0 sein + if config_BMK.has_section("Length-Adjustments"): + for prefix, value in config_BMK.items("Length-Adjustments"): + try: + f = float(value) + if f < 0: + errors.append(f"Negative Value in Length-Adjustments for {prefix}: {value}") + except ValueError: + errors.append(f"Invalid Value in Length-Adjustments for {prefix}: {value}") + + if errors: + print("Inconsistencies found:") + for e in errors: + print(f"- {e}") + print("continuing") + else: + print ("No inconsistencies found") + if __name__ == '__main__': parser = argparse.ArgumentParser(description='fetches the x/y positions from a dxf file', prog='getpositions') @@ -463,6 +500,13 @@ if __name__ == '__main__': config_BMK = configparser.ConfigParser(allow_no_value=True, delimiters=("=")) config_BMK.optionxform = lambda option: option # preserve case for letters config_BMK.read(os.path.join(config_dir, "BMK.cfg")) + + # Kabel-Config laden + config_cables = configparser.ConfigParser(allow_no_value=True, delimiters=("=")) + config_cables.optionxform = lambda option: option + config_cables.read(os.path.join(config_dir, "kabel.cfg")) + + validate_configs() output_results = dict()