From 6eebe7c94ab14227999d30dfe13dc965f64862cb Mon Sep 17 00:00:00 2001 From: mistangl Date: Wed, 6 Dec 2023 15:25:12 +0100 Subject: [PATCH] =?UTF-8?q?Klasse=20f=C3=BCr=20TOS=20Config=20und=20alle?= =?UTF-8?q?=20zuk=C3=BCnftigen=20in=20eigene=20Datei=20manage=5Fconfigs=20?= =?UTF-8?q?ausgelagert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/create_tos.py | 59 +++-------------------------------------- lib/manage_configs.py | 61 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 56 deletions(-) create mode 100644 lib/manage_configs.py diff --git a/lib/create_tos.py b/lib/create_tos.py index c0e49cc..0001123 100644 --- a/lib/create_tos.py +++ b/lib/create_tos.py @@ -1,6 +1,6 @@ import argparse import os -import json +import manage_configs """ Dieses Programm erzeugt aus den Angaben in der config TOS-Gruppen.json einen Export String zur Pflege des TOS im Ruledesigner Fusion @@ -14,63 +14,10 @@ Codebereich liegt bei Calk Link 10 """ - -class TOSGroupsConfig: - """Auslesen der Config Angaben zu den TOS Gruppen""" - - config_dir = os.environ.get('CREMIG_CFG') - config_path = os.path.join(config_dir, 'TOS-Gruppen.json') - - def __init__(self): - self.tos_hierarchy = None - - def get_children_keys(self, tos_hierarchy, currentId, result): - # wenn eine Referenz nicht weiter in der TOS Hierarchy vorkommt, dann nicht mit einsammeln - if currentId not in tos_hierarchy: - return None - childIds = tos_hierarchy[currentId]["reference-ids"].values() - level = tos_hierarchy[currentId]["TOS-level"] - if len(childIds) > 0: - for cId in childIds: - # prüfen, ob die Referenz sonst noch verwendet wird - if cId in tos_hierarchy: - result[cId] = level - for cId in childIds: - self.get_children_keys(tos_hierarchy, cId, result) - - def get_all_keywords(self): - """hole alle TOS Keywords, welche in der config Datei definiert sind""" - - # lazy. nur einmal laden, wenn noch nicht geschehen - if not self.tos_hierarchy: - self.load_tos_hierarchy() - - # beginne mit root als ersten, vordefiniertem Keyword - rootid = self.tos_hierarchy["root"] - # und von dort aus folge dann allen Referenzen - result = dict() - # root als Nullte Ebene dazu - result[rootid] = 0 - self.get_children_keys(self.tos_hierarchy, rootid, result) - return result - - def get_keywords_of_level(self, allKeywords, levelnum): - """hole alle TOS Keywords der gegebenen Hierarchiestufe "levelnum" """ - ret = list() - for kw in allKeywords: - if allKeywords[kw] == levelnum: - ret.append(kw) - return ret - - def load_tos_hierarchy(self): - """lade die gegebenen Hierarchy aus dem Config File in eine json Objekt""" - with open(self.config_path, 'r', encoding='utf-8') as fh: - self.tos_hierarchy = json.loads(fh.read()) - - def create_tos_string(): - TOS_CFG = TOSGroupsConfig() + # hole die json Datei mit den Angaben zu allen TOS Gruppen in eine lokale Config Klasse + TOS_CFG = manage_configs.TOSGroupsConfig() allKeywords = TOS_CFG.get_all_keywords() myIds = list() diff --git a/lib/manage_configs.py b/lib/manage_configs.py new file mode 100644 index 0000000..26bc736 --- /dev/null +++ b/lib/manage_configs.py @@ -0,0 +1,61 @@ +import os +import json + +""" +Diese Lib verwaltet alle Config dateien (als .cfg oder als .json) von CreoMigrate +""" + +class TOSGroupsConfig: + """Auslesen der Config Angaben zu den TOS Gruppen""" + + config_dir = os.environ.get('CREMIG_CFG') + config_path = os.path.join(config_dir, 'TOS-Gruppen.json') + + def __init__(self): + self.tos_hierarchy = None + + def get_children_keys(self, tos_hierarchy, currentId, result): + # wenn eine Referenz nicht weiter in der TOS Hierarchy vorkommt, dann nicht mit einsammeln + if currentId not in tos_hierarchy: + return None + childIds = tos_hierarchy[currentId]["reference-ids"].values() + level = tos_hierarchy[currentId]["TOS-level"] + if len(childIds) > 0: + for cId in childIds: + # prüfen, ob die Referenz sonst noch verwendet wird + if cId in tos_hierarchy: + result[cId] = level + for cId in childIds: + self.get_children_keys(tos_hierarchy, cId, result) + + def get_all_keywords(self): + """hole alle TOS Keywords, welche in der config Datei definiert sind""" + + # lazy. nur einmal laden, wenn noch nicht geschehen + if not self.tos_hierarchy: + self.load_tos_hierarchy() + + # beginne mit root als ersten, vordefiniertem Keyword + rootid = self.tos_hierarchy["root"] + # und von dort aus folge dann allen Referenzen + result = dict() + # root als Nullte Ebene dazu + result[rootid] = 0 + self.get_children_keys(self.tos_hierarchy, rootid, result) + return result + + def get_keywords_of_level(self, allKeywords, levelnum): + """hole alle TOS Keywords der gegebenen Hierarchiestufe "levelnum" """ + ret = list() + for kw in allKeywords: + if allKeywords[kw] == levelnum: + ret.append(kw) + return ret + + def load_tos_hierarchy(self): + """lade die gegebenen Hierarchy aus dem Config File in eine json Objekt""" + with open(self.config_path, 'r', encoding='utf-8') as fh: + self.tos_hierarchy = json.loads(fh.read()) + +if __name__ == '__main__': + pass \ No newline at end of file