Configlibarry zum Auslesen aller Werte aller benötigten Informationen aus den Config files erstellt
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
[Bezeichner]
|
||||
1' Rohr
|
||||
3/2-Wegeventil
|
||||
4/2-Wegeventil
|
||||
+146
-19
@@ -20,7 +20,6 @@ class JsonBasedConfig:
|
||||
"""nimm den Json String zur Initialisierung des Objektes"""
|
||||
return json.loads(json_str)
|
||||
|
||||
|
||||
class TOSGroupsConfig(JsonBasedConfig):
|
||||
"""Auslesen der Config Angaben zu den TOS Gruppen"""
|
||||
|
||||
@@ -71,7 +70,6 @@ class TOSGroupsConfig(JsonBasedConfig):
|
||||
"""lade den Json String zur Initialisierung des Objektes"""
|
||||
self.tos_hierarchy = super().from_json(json_str)
|
||||
|
||||
|
||||
class MaterialTransConfig(JsonBasedConfig):
|
||||
"""Auslesen der Config zu allen Materialangaben"""
|
||||
|
||||
@@ -120,32 +118,161 @@ class IniBasedConfig:
|
||||
self.config.read(self.config_path)
|
||||
self.isInitalized = True
|
||||
|
||||
def isInitalized(self):
|
||||
return self.isInitalized
|
||||
|
||||
def get_section_options(self, section_name):
|
||||
if not self.isInitalized:
|
||||
self.load_cfg_from_file()
|
||||
return self.config.options(section_name)
|
||||
|
||||
def sections(self):
|
||||
if not self.isInitalized:
|
||||
self.load_cfg_from_file()
|
||||
return self.config.sections()
|
||||
|
||||
def get_int(self, section_name, option):
|
||||
if not self.isInitalized:
|
||||
self.load_cfg_from_file()
|
||||
return self.config.getint(section_name, option)
|
||||
|
||||
def get_dict(self, section_name):
|
||||
if not self.isInitalized:
|
||||
self.load_cfg_from_file()
|
||||
return dict(self.config.items(section_name))
|
||||
|
||||
class AllgmeinConfig(IniBasedConfig):
|
||||
"""Auslesen der Config für alle allgemeinen Angaben"""
|
||||
def __init__(self, config_dir='.', config_file='Allgmein.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get_sections(self):
|
||||
""" gibt alle Sektionen zurück wie
|
||||
Kategorien, Dispogruppe, Dispolaufgruppe, EinheitAusw, ...
|
||||
"""
|
||||
return super().sections()
|
||||
|
||||
def get_options(self, section_name):
|
||||
""" get all options below"""
|
||||
return super().get_section_options(section_name)
|
||||
|
||||
class BezeichnerConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen möglichen Bezeichner"""
|
||||
def __init__(self, config_dir='.', config_file='Bezeichner.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get(self):
|
||||
"""hole alle möglichen Bezeichner """
|
||||
return super().get_section_options("Bezeichner")
|
||||
|
||||
class FarbenConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen Farbensarten"""
|
||||
def __init__(self, config_dir='.', config_file='Farbensarten.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get_farbauswahl(self):
|
||||
"""hole alle Farben die möglich sind
|
||||
-> [RAL 1004 Goldgelb, RAL 2000 Gelborange, RAL 3002 Kaminrot, RAL 5010 Enzianblau]
|
||||
"""
|
||||
return super().get_section_options("Farbauswahl")
|
||||
|
||||
def get_farben_eloxieren(self):
|
||||
"""hole alle Farben fürs eloxieren
|
||||
-> [Rot, Grün, Blau, Gelb, Schwarz, Violett, Natur]
|
||||
"""
|
||||
return super().get_section_options("FarbeEloxieren")
|
||||
|
||||
class FertigungsartConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen Fertigungsarten"""
|
||||
def __init__(self, config_dir='.', config_file='Fertigungsarten.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get_fertigungsarten(self):
|
||||
"""hole alle Fertigungsarten, welche als Sektionen in der config gegeben sind, also
|
||||
Fertigungsart, Allgemeintoleranz3DDruck, AllgemeintoleranzGiessen,
|
||||
AllgemeintoleranzExtrudieren, ...
|
||||
"""
|
||||
return super().sections()
|
||||
|
||||
def get_normen_of_type(self, ftype):
|
||||
"""hole alle möglichen Oberflächen Behandlungsarten zum gegebenen Material
|
||||
Allgemeintoleranz3DDruck ftype
|
||||
-> [ISO 2768:1991-fH, ISO 2768:1991-fK, ISO 2768:1991-fL, ISO 2768:1991-mH, , ...]
|
||||
"""
|
||||
return super().get_section_options(ftype)
|
||||
|
||||
class HerstellerConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen möglichen Hersteller"""
|
||||
def __init__(self, config_dir='.', config_file='Hersteller.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get(self):
|
||||
"""hole alle möglichen Bezeichner """
|
||||
return super().get_section_options("Hersteller")
|
||||
|
||||
class NormenConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen Normen"""
|
||||
def __init__(self, config_dir='.', config_file='Normen.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get_normen(self):
|
||||
"""hole alle Normen, welche als Sektionen in der config gegeben sind, also
|
||||
Oberflaechennorm, Kantennorm, Massnorm, Tolerierungsnorm,..
|
||||
"""
|
||||
return super().sections()
|
||||
|
||||
def get_normen_of_type(self, otype):
|
||||
"""hole alle möglichen Oberflächen Behandlungsarten zum gegebenen Material
|
||||
Oberfläche otype
|
||||
Oberflaechennorm -> [ISO 1302:2002, ISO 21920]
|
||||
Tolerierungsnorm, ...
|
||||
"""
|
||||
return super().get_section_options(otype)
|
||||
|
||||
class OberflächeConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen Oberflächen"""
|
||||
def __init__(self, config_dir='.', config_file='Oberflächenbehandlung.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get_oberflächen(self):
|
||||
"""hole alle Oberflächen, welche als Sektionen in der config gegeben
|
||||
sind, also OberflächenbehandlungStahl, OberflächenbehandlungAluminium, ... """
|
||||
return super().sections()
|
||||
|
||||
def get_oberfläche_of_type(self, otype):
|
||||
"""hole alle möglichen Oberflächen Behandlungsarten zum gegebenen Material
|
||||
Oberfläche otype
|
||||
OberflächenbehandlungStahl --> [lackieren, pulverbeschichten, verzinken, vernickeln, brünieren, härten, bürsten, sandstrahlen]
|
||||
OberflächenbehandlungAluminium
|
||||
...
|
||||
"""
|
||||
return super().get_section_options(otype)
|
||||
|
||||
class WerkstoffeConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen Werkstoffen"""
|
||||
def __init__(self, config_dir='.', config_file='Werkstoff.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get_werkstoffe_of_type(self, wtype):
|
||||
"""hole alle Werkstoffe unter der gegebenen Sektion
|
||||
Werkstofftyp wtype
|
||||
Stahl --> [ 1.0035 (S185), 1.0038 (S235JR), 1.0122 (S235JRC), 1.0122+C (S235JRC+C), 1.0330 (DC01), ... ]
|
||||
Aluminium
|
||||
Kunst-/ Verbundstoff
|
||||
Schwermetall
|
||||
Festigkeitsklasse
|
||||
siehe Hersteller
|
||||
|
||||
def get_werkstoff_namen(self):
|
||||
"""hole alle Werkstoffe, welche als Sektionen in der config gegeben sind, also z.B.
|
||||
Stahl, Aluminium, Kunst-/ Verbundstoff, ...
|
||||
"""
|
||||
if not super().isInitalized():
|
||||
super().load_cfg_from_file()
|
||||
return super().get_section_options(wtype)
|
||||
return super().sections()
|
||||
|
||||
def get_werkstoffe_of_name(self, wName):
|
||||
"""hole alle Werkstoffe unter der gegebenen Sektion
|
||||
Werkstofftyp wName
|
||||
Stahl --> [ 1.0035 (S185), 1.0038 (S235JR), 1.0122 (S235JRC), 1.0122+C (S235JRC+C), 1.0330 (DC01), ... ]
|
||||
Aluminium, ...
|
||||
"""
|
||||
return super().get_section_options(wName)
|
||||
|
||||
class PfadConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen Pfaden"""
|
||||
def __init__(self, config_dir='.', config_file='Zielpfade.cfg'):
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get(self):
|
||||
"""hole alle möglichen Bezeichner """
|
||||
return super().get_section_options("Zielpfade")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pass
|
||||
Kalkulationsart
|
||||
|
||||
+84
-3
@@ -284,7 +284,7 @@ class TestWerkstoffeFromLocalConfigs(unittest.TestCase):
|
||||
|
||||
WKST_CFG = manage_configs.WerkstoffeConfig(self.config_dir, 'Werkstoff.cfg')
|
||||
|
||||
steels = WKST_CFG.get_werkstoffe_of_type("Stahl")
|
||||
steels = WKST_CFG.get_werkstoffe_of_name("Stahl")
|
||||
result = ['1.0035 (S185)', '1.0038 (S235JR)', '1.0122 (S235JRC)',
|
||||
'1.0122+C (S235JRC+C)', '1.0330 (DC01)', '1.0401 (C15)',
|
||||
'1.0501 (C35)', '1.0503 (C45)', '1.0503+N (C45+N)',
|
||||
@@ -296,7 +296,7 @@ class TestWerkstoffeFromLocalConfigs(unittest.TestCase):
|
||||
'siehe Hersteller' ]
|
||||
self.assertCountEqual(steels, result)
|
||||
|
||||
steels = WKST_CFG.get_werkstoffe_of_type("Aluminium")
|
||||
steels = WKST_CFG.get_werkstoffe_of_name("Aluminium")
|
||||
result = [ "EN AW-1050A (3.0255)", "EN AW-2007 (3.1645)", "EN AW-2014-T3 (3.1255-T3)",
|
||||
"EN AW-2014-T4 (3.1255-T4)", "EN AW-6060 (3.3206)",
|
||||
"EN AW-6060-T66 (3.3206-T66)", "EN AW-7075 (3.4365)",
|
||||
@@ -360,12 +360,93 @@ siehe Hersteller
|
||||
WKST_CFG = manage_configs.WerkstoffeConfig()
|
||||
WKST_CFG.from_cfg_str(self.wkstoffe)
|
||||
|
||||
steels = WKST_CFG.get_werkstoffe_of_type("Stahl")
|
||||
steels = WKST_CFG.get_werkstoffe_of_name("Stahl")
|
||||
|
||||
result = ["1.0035 (S185)", "1.0038 (S235JR)", "1.0122 (S235JRC)",
|
||||
"1.0122+C (S235JRC+C)", "1.0330 (DC01)", "1.0401 (C15)", "1.0501 (C35)",
|
||||
"1.0503 (C45)", "1.0503+N (C45+N)", "siehe Hersteller"]
|
||||
self.assertCountEqual(steels, result)
|
||||
|
||||
class TestAllgmein(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
self.allgemein = """
|
||||
|
||||
[Kategorien]
|
||||
Baugruppe
|
||||
Einzelteil
|
||||
Kaufteil
|
||||
NichtSivas
|
||||
Normteil
|
||||
Schweissbaugruppe
|
||||
|
||||
[Dispogruppe]
|
||||
Fahrstrecke=10
|
||||
Förderer=20
|
||||
Gerüst=30
|
||||
Betriebsmittel=40
|
||||
Automation=50
|
||||
Kleinteil=60
|
||||
Rohmaterial=70
|
||||
Sonstiges Intern=80
|
||||
Baustelleneinrichtung=90
|
||||
Sonderkonstruktionen=100
|
||||
|
||||
[Dispolaufgruppe]
|
||||
Omniflo=10
|
||||
Intra Logistic System + alt-HFS=20
|
||||
Fremd-Transportsysteme + SSG-Anbauten=30
|
||||
Spinnereikomponente=40
|
||||
Automotiv=45
|
||||
Nicht eindeutig, Sonder=50
|
||||
|
||||
[Kalkulationsart]
|
||||
Eigenbau
|
||||
Kaufteil
|
||||
Mischteil
|
||||
"""
|
||||
|
||||
def test_get_allgmein(self):
|
||||
"""
|
||||
get list of sections in allgmein
|
||||
"""
|
||||
|
||||
ALLG_CFG = manage_configs.AllgmeinConfig()
|
||||
ALLG_CFG.from_cfg_str(self.allgemein)
|
||||
|
||||
allg_secs = ALLG_CFG.get_sections()
|
||||
result = ['Kategorien', 'Dispogruppe', 'Dispolaufgruppe', 'Kalkulationsart']
|
||||
self.assertCountEqual(allg_secs, result)
|
||||
|
||||
opts = ALLG_CFG.get_options('Kalkulationsart')
|
||||
result = ['Eigenbau', 'Kaufteil', 'Mischteil']
|
||||
self.assertCountEqual(opts, result)
|
||||
|
||||
opts = ALLG_CFG.get_options('Dispolaufgruppe')
|
||||
result = ['Omniflo', 'Intra Logistic System + alt-HFS',
|
||||
'Fremd-Transportsysteme + SSG-Anbauten',
|
||||
'Spinnereikomponente', 'Automotiv', "Nicht eindeutig, Sonder"]
|
||||
self.assertCountEqual(opts, result)
|
||||
|
||||
val = ALLG_CFG.get_int('Dispolaufgruppe', 'Omniflo')
|
||||
self.assertEqual(val, 10)
|
||||
|
||||
dint = ALLG_CFG.get_dict('Dispogruppe')
|
||||
res = { 'Fahrstrecke':10,
|
||||
'Förderer':20,
|
||||
'Gerüst':30,
|
||||
'Betriebsmittel':40,
|
||||
'Automation':50,
|
||||
'Kleinteil':60,
|
||||
'Rohmaterial':70,
|
||||
'Sonstiges Intern':80,
|
||||
'Baustelleneinrichtung':90,
|
||||
'Sonderkonstruktionen':100,
|
||||
}
|
||||
self.assertCountEqual(dint, res)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user