From b8ab0b1612d91ce7b1f4b083af4f13275b099b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com> Date: Mon, 4 Mar 2024 21:39:49 +0100 Subject: [PATCH] MAINT: refactor function for better code readability --- .../table_json_conversion/table_generator.py | 34 +++++++------------ 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/caosadvancedtools/table_json_conversion/table_generator.py b/src/caosadvancedtools/table_json_conversion/table_generator.py index 1b52204e..913ddd7d 100644 --- a/src/caosadvancedtools/table_json_conversion/table_generator.py +++ b/src/caosadvancedtools/table_json_conversion/table_generator.py @@ -113,30 +113,20 @@ class TableTemplateGenerator(ABC): sheets, [RTname], foreign_keys) return sheets - def _get_foreign_keys(self, foreign_keys: dict, path: list) -> list: + def _get_foreign_keys(self, keys: dict, path: list) -> list: """ returns the foreign keys that are needed at the location to which path points """ - cpath = list(path) - keys = foreign_keys - selected_keys = None - while cpath: - if keys is None: - raise ValueError(f"A foreign key definition is missing for path:" - f"\n{path}\n{foreign_keys}") - if cpath[0] not in keys: - raise ValueError(f"A foreign key definition is missing for path: \n{path}\n{keys}") - keys = keys[cpath[0]] - if isinstance(keys, list): - selected_keys, keys = keys, None - else: - selected_keys, keys = None, keys - cpath = cpath[1:] + msg = (f"A foreign key definition is missing for path:\n{path}\n{keys}") + while path: + if keys is None or path[0] not in keys: + raise ValueError(msg) + keys = keys[path[0]] + path = path[1:] if isinstance(keys, dict) and "__this__" in keys: - selected_keys = keys["__this__"] - - if selected_keys is None: - raise ValueError(f"A foreign key definition is missing for path:" - f"\n{path}\n{foreign_keys}") - return selected_keys + return keys["__this__"] + elif isinstance(keys, list): + return keys + else: + raise ValueError(msg) def _treat_schema_element(self, schema: dict, sheets: dict = None, path: list = None, foreign_keys: dict = None, level_in_sheet_name: int = 1, -- GitLab