In Klasse umgestrickt

This commit is contained in:
2023-12-06 15:11:41 +01:00
parent 640bbe716e
commit 1df77b3fee
2 changed files with 92 additions and 52 deletions
+24 -1
View File
@@ -20,10 +20,33 @@
"request": "launch", "request": "launch",
"program": "${file}", "program": "${file}",
"console": "integratedTerminal", "console": "integratedTerminal",
"justMyCode": true "justMyCode": true,
"args": [ "args": [
"--sivas=829522001" "--sivas=829522001"
], ],
} }
{
"name": "Python: create TOS sring",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"args": [
"--console"
],
}
{
"name": "Python: TOS string to file",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"args": [
"--outfile=blubb.txt"
],
}
] ]
} }
+68 -51
View File
@@ -13,58 +13,74 @@ Codebereich liegt bei Calk Link 10
- Dort dann die Powershell "Tomcat-IIS_reset" ausführen. - Dort dann die Powershell "Tomcat-IIS_reset" ausführen.
""" """
def get_children_keys(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:
get_children_keys(tos_hierarchy, cId, result)
def get_all_keywords(tos_hierarchy): class TOSGroupsConfig:
# hole dir das erste Keyword """Auslesen der Config Angaben zu den TOS Gruppen"""
rootid = tos_hierarchy["root"]
# und von dort aus alle Referenzen
result = dict()
# root als Nullte Ebene dazu
result[rootid] = 0
get_children_keys(tos_hierarchy, rootid, result)
return result
def get_keywords_of_level(allKeywords, levelnum): config_dir = os.environ.get('CREMIG_CFG')
ret = list() config_path = os.path.join(config_dir, 'TOS-Gruppen.json')
for kw in allKeywords:
if allKeywords[kw] == levelnum: def __init__(self):
ret.append(kw) self.tos_hierarchy = None
return ret
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(config_path): def create_tos_string():
TOS_CFG = TOSGroupsConfig()
allKeywords = TOS_CFG.get_all_keywords()
myIds = list()
for level in range(0,5):
myIds.extend(TOS_CFG.get_keywords_of_level(allKeywords, level))
res = 'CalcMaster=EdmCodVal("' res = 'CalcMaster=EdmCodVal("'
if os.path.isfile(config_path): res += '")&EdmCodVal("'.join(myIds)
tos_hierarchy = "" res += '")'
with open(config_path, 'r', encoding='utf-8') as fh: return res
tos_hierarchy = json.loads(fh.read())
allKeywords = get_all_keywords(tos_hierarchy)
myIds = list()
for level in range(0,5):
myIds.extend(get_keywords_of_level(allKeywords, level))
res += '")&EdmCodVal("'.join(myIds)
res += '")'
return res
else:
print(f"Can't create tos string.")
return None
# CalcMaster=EdmCodVal("TOS-Gruppe")&EdmCodVal("TOS_Schoenenberger_Produkt")&EdmCodVal("TOS_Automation")&EdmCodVal("TOS_Maschinenelement")&EdmCodVal("TOS_Schoenenberger_Komponenten")&EdmCodVal("TOS_Pneumatik")&EdmCodVal("TOS_Konfig")&EdmCodVal("TOS_ILS")&EdmCodVal("TOS_MAS")&EdmCodVal("TOS_Spinnereikomponente")&EdmCodVal("TOS_Betriebsmittel")&EdmCodVal("TOS_Geruest")&EdmCodVal("TOS_FremdTransport")&EdmCodVal("TOS_MAS_Konfig")&EdmCodVal("TOS_Schaltschrank")&EdmCodVal("TOS_Schalt_Einbau")&EdmCodVal("TOS_Dezentral")&EdmCodVal("TOS_Automation_Sensorik")&EdmCodVal("TOS_Kabel")&EdmCodVal("TOS_Installation")&EdmCodVal("TOS_Automation_Sonstiges")&EdmCodVal("TOS_Verbindungselement")&EdmCodVal("TOS_Lager")&EdmCodVal("TOS_Kraft_Drehmoment")&EdmCodVal("TOS_Sicherungselement")&EdmCodVal("TOS_Bedienungselement")&EdmCodVal("TOS_ILS_2")&EdmCodVal("TOS_ILS_Foerderer")&EdmCodVal("TOS_MAS_Fahrstecke")&EdmCodVal("TOS_Trolley")&EdmCodVal("TOS_Trolley_Projekte")&EdmCodVal("TOS_Trolley_Omniflo")&EdmCodVal("TOS_Trolley_Spinnerei")&EdmCodVal("TOS_Trolley_ILS") # CalcMaster=EdmCodVal("TOS-Gruppe")&EdmCodVal("TOS_Schoenenberger_Produkt")&EdmCodVal("TOS_Automation")&EdmCodVal("TOS_Maschinenelement")&EdmCodVal("TOS_Schoenenberger_Komponenten")&EdmCodVal("TOS_Pneumatik")&EdmCodVal("TOS_Konfig")&EdmCodVal("TOS_ILS")&EdmCodVal("TOS_MAS")&EdmCodVal("TOS_Spinnereikomponente")&EdmCodVal("TOS_Betriebsmittel")&EdmCodVal("TOS_Geruest")&EdmCodVal("TOS_FremdTransport")&EdmCodVal("TOS_MAS_Konfig")&EdmCodVal("TOS_Schaltschrank")&EdmCodVal("TOS_Schalt_Einbau")&EdmCodVal("TOS_Dezentral")&EdmCodVal("TOS_Automation_Sensorik")&EdmCodVal("TOS_Kabel")&EdmCodVal("TOS_Installation")&EdmCodVal("TOS_Automation_Sonstiges")&EdmCodVal("TOS_Verbindungselement")&EdmCodVal("TOS_Lager")&EdmCodVal("TOS_Kraft_Drehmoment")&EdmCodVal("TOS_Sicherungselement")&EdmCodVal("TOS_Bedienungselement")&EdmCodVal("TOS_ILS_2")&EdmCodVal("TOS_ILS_Foerderer")&EdmCodVal("TOS_MAS_Fahrstecke")&EdmCodVal("TOS_Trolley")&EdmCodVal("TOS_Trolley_Projekte")&EdmCodVal("TOS_Trolley_Omniflo")&EdmCodVal("TOS_Trolley_Spinnerei")&EdmCodVal("TOS_Trolley_ILS")
@@ -75,15 +91,16 @@ if __name__ == '__main__':
args = parser.parse_args() args = parser.parse_args()
out_dir = os.environ.get('CREMIG_DATA') out_dir = os.environ.get('CREMIG_WORK')
config_dir = os.environ.get('CREMIG_CFG')
config_path = os.path.join(config_dir, 'TOS-Gruppen.json')
if args.outfile: if args.outfile:
res = create_tos_string(config_path) tos_string = create_tos_string()
out_path = os.path.join(out_dir, args.outfile)
with open(out_path, "w") as fh_out:
print(tos_string, file=fh_out)
elif args.console: elif args.console:
res = create_tos_string(config_path) tos_string = create_tos_string()
print(res) print(tos_string)
else: else:
parser.print_help() parser.print_help()