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