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
"""
class GeneralConfig:
"""Klasse mit generellen Methoden für alle Config Objekte"""
class JsonBasedConfig:
"""Klasse mit generellen Methoden für alle Config Objekte mit json 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)
@@ -20,12 +20,8 @@ class GeneralConfig:
"""nimm den Json String zur Initialisierung des Objektes"""
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(GeneralConfig):
class TOSGroupsConfig(JsonBasedConfig):
"""Auslesen der Config Angaben zu den TOS Gruppen"""
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)
class MaterialTransConfig(GeneralConfig):
class MaterialTransConfig(JsonBasedConfig):
"""Auslesen der Config zu allen Materialangaben"""
def __init__(self, config_dir='.', config_file='Materialübersetzung.json'):
@@ -104,10 +100,35 @@ class MaterialTransConfig(GeneralConfig):
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"""
def __init__(self, config_dir='.', config_file='Werkstoff.cfg'):
self.wkstoff_config_parser = None
super().__init__(config_dir, config_file)
def get_werkstoffe_of_type(self, wtype):
@@ -121,26 +142,9 @@ class WerkstoffeConfig(GeneralConfig):
siehe Hersteller
"""
if not self.wkstoff_config_parser:
self.load_cfg_from_file()
return self.wkstoff_config_parser.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 not super().isInitalized():
super().load_cfg_from_file()
return super().get_section_options(wtype)
if __name__ == '__main__':