eigene Abstrakte Klasse für alle Config basierten Abfragen eingeführt
This commit is contained in:
+34
-30
@@ -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__':
|
||||||
|
|||||||
Reference in New Issue
Block a user