set_env und get_env an Controller weitergeben, um Pfade zu erhalten und csv Dateien bzw. lokale Datenbank lesen zu können

This commit is contained in:
2024-01-31 17:07:35 +01:00
parent 13c1e399d2
commit a1e688636d
+70 -11
View File
@@ -1,7 +1,7 @@
import os
"""
Contains the logic for the MVC of CreoMigrate Gui
"""
# Infos und Fehlermeldungen die ausgelöst werden können
messages = {
"rüstcode_infos": 'Bitte Rüstcode auswählen!',
@@ -72,9 +72,12 @@ gui_data_keys = [
"zusatzinfos_auto_text",
"zusatzinfos_bendef_text",
# Felder der Comboboxen. benannt wie deren callbacks
"cb_pdm_kategorie_neu",
"cb_halbzeug_neu",
"cb_halbzeugoberflaeche",
"cb_halbzeugfarbe",
"cb_lebenszyklus_status_neu",
"cb_3Dmodel_neu",
"cb_pdm_kategorie_neu",
"cb_halbzeugOhneSaege_neu",
"cb_ruestcode_neu",
"cb_fertigungsart_neu",
@@ -83,20 +86,18 @@ gui_data_keys = [
"cb_kalkulationsart_neu",
"cb_beschaffungsart_neu",
"cb_mengeneinheit_neu",
"cb_halbzeug_neu",
"cb_dispogruppe_neu",
"cb_dispolaufgruppe_neu",
"cb_hersteller_neu",
"cb_werkstofftyp_neu",
"cb_material_neu",
"cb_oberflaeche_neu",
"cb_farbe_neu",
# Buttons
"cb_suche_asm",
"cb_farbe_neu",
# buttons
"cb_speichern",
"cb_migrieren",
"cb_zurücksetzen",
]
]
class Controller():
@@ -109,6 +110,25 @@ class Controller():
self.set_model(model)
self.set_view(view)
self.logic = None
self.env = None
def set_env(self, env):
self.environment = env
def get_env(self, env_path):
if self.environment == None:
raise Exception("No environment set")
if env_path == "lib":
ret = self.environment.lib_dir
elif env_path == "data":
ret = self.environment.data_dir
elif env_path == "out":
ret = self.environment.out_dir
elif env_path == "cfg":
ret = self.environment.cfg_dir
else:
raise Exception("this path is not defined "+env_path)
return ret
def add_logic(self, logic):
self.logic = logic
@@ -264,11 +284,34 @@ class GuiLogic():
if k in self.excel_to_gui and v is not None:
ret[self.excel_to_gui[k]] = v
# Spezial: Befüllung von Änderungstext mit dem Author, falls vorhanden
# Spezial: Befüllung von Änderungstext mit dem Author, falls in der .csv vorhanden
if "Indexerfasser" in data and "Aenderungstext" in data:
ret["aenderungstext_sivas"] = '{aenderungstext} (von {author})'.format(aenderungstext=data["Aenderungstext"], author=data["Indexerfasser"])
# Indexerfasser wird nicht in der gui verwaltet. Deshalb Modifikation aus den Rohdaten
# set defaults from given logic
r1 = self.callback("cb_neuaufbau", None)
ret.update(r1)
r2 = self.callback("cb_aus_halbzeug_neu", None)
ret.update(r2)
# add entry dependencies
dep = self.entry_dependencies(ret)
ret.update(dep)
return ret
def entry_dependencies(self, data):
ret = dict()
halbzeugoberflaeche = data["halbzeugoberflaeche_neu"]
if data["aus_halbzeug_neu"] == True:
if halbzeugoberflaeche == "eloxieren" or halbzeugoberflaeche == "lackieren" or halbzeugoberflaeche == "pulverbeschichten":
pass
else:
ret["halbzeugoberflaeche_neu"] = ''
else:
ret["halbzeugoberflaeche_neu"] = ''
return ret
def callback(self, key, value):
"""gibt ein dict zurück, welches neu im Modell gesetzt wird"""
@@ -277,9 +320,9 @@ class GuiLogic():
if key == 'cb_pdm_kategorie_neu':
pass
elif key == 'cb_neuaufbau':
pass
return self.neuaufbau(value)
elif key == 'cb_aus_halbzeug_neu':
pass
return self.aus_halbzeug_neu(value)
elif key == 'cb_lebenszyklus_status_neu':
pass
elif key == 'cb_3Dmodel_neu':
@@ -317,7 +360,7 @@ class GuiLogic():
elif key == 'cb_oberflaeche_neu':
pass
elif key == 'cb_farbe_neu':
self.farbe(value)
return self.farbe(value)
elif key == 'cb_speichern':
pass
elif key == 'cb_migrieren':
@@ -329,6 +372,22 @@ class GuiLogic():
else:
raise Exception("this callback does not exist "+key)
def neuaufbau(self, trueOrfalse):
ret = dict()
pdm_kat = self.model.get_gui_data("pdm_kategorie_neu")
if pdm_kat != "Einzelteil" or pdm_kat != "Kaufteil":
ret["neuaufbau"] = False
return ret
def aus_halbzeug_neu(self, trueOrfalse):
ret = dict()
pdm_kat = self.model.get_gui_data("pdm_kategorie_neu")
if pdm_kat == "Einzelteil":
pass
else:
ret["aus_halbzeug_neu"] = False
return ret
def werkstofftyp(self, selected_werkstoff):
"""bekommt Aluminium, Stahl etc. und setzt dann die anderen Felder der Oberfläche"""