eigene Abstrakte Klasse für alle Config basierten Abfragen eingeführt

This commit is contained in:
2023-12-14 17:22:52 +01:00
parent 7120a762eb
commit 0a6a9d5a07
+34 -30
View File
@@ -5,8 +5,8 @@ from configparser import ConfigParser
""" """
Diese Lib verwaltet alle Config dateien (als .cfg oder als .json) von CreoMigrate Diese Lib verwaltet alle Config dateien (als .cfg oder als .json) von CreoMigrate
""" """
class GeneralConfig: class JsonBasedConfig:
"""Klasse mit generellen Methoden für alle Config Objekte""" """Klasse mit generellen Methoden für alle Config Objekte mit json files"""
def __init__(self, config_dir, config_file): def __init__(self, config_dir, config_file):
"""merke dir den Pfad zu den Configdateien""" """merke dir den Pfad zu den Configdateien"""
self.config_path = os.path.join(config_dir, config_file) self.config_path = os.path.join(config_dir, config_file)
@@ -20,12 +20,8 @@ class GeneralConfig:
"""nimm den Json String zur Initialisierung des Objektes""" """nimm den Json String zur Initialisierung des Objektes"""
return json.loads(json_str) return json.loads(json_str)
def from_cfg_str(self, cfg_str, config):
"""nimm den Json String zur Initialisierung des Objektes"""
config.read_string(cfg_str)
class TOSGroupsConfig(JsonBasedConfig):
class TOSGroupsConfig(GeneralConfig):
"""Auslesen der Config Angaben zu den TOS Gruppen""" """Auslesen der Config Angaben zu den TOS Gruppen"""
def __init__(self, config_dir='.', config_file='TOS-Gruppen.json'): def __init__(self, config_dir='.', config_file='TOS-Gruppen.json'):
@@ -76,7 +72,7 @@ class TOSGroupsConfig(GeneralConfig):
self.tos_hierarchy = super().from_json(json_str) self.tos_hierarchy = super().from_json(json_str)
class MaterialTransConfig(GeneralConfig): class MaterialTransConfig(JsonBasedConfig):
"""Auslesen der Config zu allen Materialangaben""" """Auslesen der Config zu allen Materialangaben"""
def __init__(self, config_dir='.', config_file='Materialübersetzung.json'): def __init__(self, config_dir='.', config_file='Materialübersetzung.json'):
@@ -104,10 +100,35 @@ class MaterialTransConfig(GeneralConfig):
return self.materials[mat] return self.materials[mat]
class WerkstoffeConfig(GeneralConfig):
class IniBasedConfig:
"""Klasse mit generellen Methoden für alle Config Objekte mit .cfg/.ini files"""
def __init__(self, config_dir, config_file):
"""merke dir den Pfad zu den Configdateien"""
self.config_path = os.path.join(config_dir, config_file)
self.isInitalized = False
self.config = ConfigParser(allow_no_value=True)
self.config.optionxform = lambda option: option # preserve case for letters
def from_cfg_str(self, cfg_str):
"""nimm den config String zur Initialisierung des Objektes"""
self.config.read_string(cfg_str)
self.isInitalized = True
def load_cfg_from_file(self):
"""lade das config file vom gegeben Pfad"""
self.config.read(self.config_path)
self.isInitalized = True
def isInitalized(self):
return self.isInitalized
def get_section_options(self, section_name):
return self.config.options(section_name)
class WerkstoffeConfig(IniBasedConfig):
"""Auslesen der Config zu allen Werkstoffen""" """Auslesen der Config zu allen Werkstoffen"""
def __init__(self, config_dir='.', config_file='Werkstoff.cfg'): def __init__(self, config_dir='.', config_file='Werkstoff.cfg'):
self.wkstoff_config_parser = None
super().__init__(config_dir, config_file) super().__init__(config_dir, config_file)
def get_werkstoffe_of_type(self, wtype): def get_werkstoffe_of_type(self, wtype):
@@ -121,26 +142,9 @@ class WerkstoffeConfig(GeneralConfig):
siehe Hersteller siehe Hersteller
""" """
if not self.wkstoff_config_parser: if not super().isInitalized():
self.load_cfg_from_file() super().load_cfg_from_file()
return self.wkstoff_config_parser.options(wtype) return super().get_section_options(wtype)
def from_json(self, json_str):
pass
def from_cfg_str(self, cfg_str):
"""if you have to deal with a .cfg file """
config = ConfigParser(allow_no_value=True)
config.optionxform = lambda option: option # preserve case for letters
self.wkstoff_config_parser = config
super().from_cfg_str(cfg_str, self.wkstoff_config_parser)
def load_cfg_from_file(self):
"""lade das config file vom gegeben Pfad"""
config = ConfigParser(allow_no_value=True)
config.optionxform = lambda option: option # preserve case for letters
config.read(self.config_path)
self.wkstoff_config_parser = config
if __name__ == '__main__': if __name__ == '__main__':