diff --git a/src/caosadvancedtools/table_json_conversion/table_generator.py b/src/caosadvancedtools/table_json_conversion/table_generator.py index 1b52204e77b4b63d06d0fbc4d813c0a10fa2994b..913ddd7dd75fcf025fc7ab4482615db5c35bcb3a 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,