Logik für Freigabevermerk und ZUsatzinfos implementiert

This commit is contained in:
2024-03-12 14:57:47 +01:00
parent 997592e17f
commit dd20c42851
2 changed files with 134 additions and 40 deletions
+120 -26
View File
@@ -185,6 +185,7 @@ class CadItem(DataModel):
self._read_only_items = {}
if self._logic:
self._logic.clear_states()
self._logic.clear_configurations()
def add_logic(self, logic):
self._logic = logic
@@ -281,19 +282,42 @@ class CadItem(DataModel):
def get_all_gui_data(self):
return self._gui_data
def _transform_content_from_csv(self, translated_data):
def _transform_content_from_csv(self, translated_data, author=None):
""""baut die Texte aus der csv Datei nach dem Einladen um"""
# Änderungstext sollte Author enthalten wenn einer gegeben ist
if 'aenderungstext_sivas' in translated_data:
text= translated_data["aenderungstext_sivas"]
text_neu = None
# semikolon müssen rausfliegen
if re.search(';', text):
text_neu = re.sub(r"\s*;\s*", " /", text, flags=re.I)
if author:
if text_neu:
text_neu = '{aenderungstext} (von {author})'.format(aenderungstext=text_neu, author=author)
else:
text_neu = '{aenderungstext} (von {author})'.format(aenderungstext=text, author=author)
if text_neu:
translated_data["aenderungstext_neu"] = text_neu
else:
pass
else:
default = "Erstanlage"
if author:
default = 'Erstanlage (von {author})'.format(author=author)
translated_data["aenderungstext_neu"] = default
# Spezial: Abkürzungen .kpl rausschmeissen. Text eventuell kürzen
if "bezeichnung1_sivas" in translated_data:
text = translated_data["bezeichnung1_sivas"]
translated_data["bezeichnung1_sivas"] = re.sub(r"\s+kpl[.|\s]", "", text, flags=re.I)
translated_data["bezeichnung1_neu"] = re.sub(r"\s+kpl[.|\s]", "", text, flags=re.I)
# Spezial Halbzeug ohne Sägeliste
if "halbzeugOhneSaege_sivas" in translated_data:
text = translated_data["halbzeugOhneSaege_sivas"]
if text =="N":
translated_data["halbzeugOhneSaege_sivas"] = "Sägeliste benötigt"
translated_data["halbzeugOhneSaege_neu"] = "Sägeliste benötigt"
else:
translated_data["halbzeugOhneSaege_sivas"] = "Sägeliste nicht benötigt"
translated_data["halbzeugOhneSaege_neu"] = "Sägeliste nicht benötigt"
# Spezial Beschaffungsart
if "beschaffungsart_sivas" in translated_data:
@@ -311,13 +335,23 @@ class CadItem(DataModel):
# Spezial Freigabevermerk
if "freigabevermerk_sivas" in translated_data:
text = translated_data["freigabevermerk_sivas"]
translated_data["freigabevermerk_sivas"] = re.sub(r";", " /", text, flags=re.I)
if re.search(';', text):
translated_data["freigabevermerk_neu"] = re.sub(r"\s*;\s*", " /", text, flags=re.I)
# Spezial Hersteller: aus "80312 - Rehau AG & Co." wird "Rehau AG & Co."
if "hersteller_sivas" in translated_data:
text = translated_data["hersteller_sivas"]
translated_data["hersteller_sivas"] = re.sub(r"^.*-\s+", "", text, flags=re.I)
if re.search(r"^.*-\s+", text):
translated_data["hersteller_neu"] = re.sub(r"^.*-\s+", "", text, flags=re.I)
# Spezial Änderungsindex
if "aenderungsindex_sivas" not in translated_data:
translated_data["aenderungsindex_neu"] = 'A'
elif "aenderungsindex_sivas" in translated_data:
text = translated_data["aenderungsindex_sivas"]
if text.islower():
translated_data["aenderungsindex_neu"] = text.upper()
return translated_data
@@ -328,21 +362,12 @@ class CadItem(DataModel):
translated_data[self.excel_to_gui[k]] = v
# Spezial: Befüllung von Änderungstext mit dem Author, falls in der .csv vorhanden
# Indexerfasser wird nicht in der gui verwaltet. Deshalb Modifikation aus den Rohdaten
author = None
if "Indexerfasser" in data:
author = data["Indexerfasser"]
if "Aenderungstext" in data:
if author:
translated_data["aenderungstext_sivas"] = '{aenderungstext} (von {author})'.format(aenderungstext=data["Aenderungstext"], author=author)
# Indexerfasser wird nicht in der gui verwaltet. Deshalb Modifikation aus den Rohdate
else:
translated_data["aenderungstext_sivas"] = data["Aenderungstext"]
else:
default = "Erstanlage"
if author:
default = 'Erstanlage (von {author})'.format(author=author)
translated_data["aenderungstext_sivas"] = default
translated_data = self._transform_content_from_csv(translated_data)
translated_data = self._transform_content_from_csv(translated_data, author)
return translated_data
def get_child_of_id(self, sivasId):
@@ -598,7 +623,7 @@ class GuiLogic():
# hier holt man die Daten der Configs
self._config = configs
# hier werden die Zustände gespeichert
self._states = dict()
self._states = dict() # comboboxen disabled/enabled
def clear_states(self):
self._states = dict()
@@ -607,6 +632,7 @@ class GuiLogic():
def set_state(self, key, val):
""" merkt sich den status wie 'readonly' etc für dieses item in der GUI"""
self._states[key] = val
def set_gui_defaults(self):
# set defaults from given logic
@@ -680,6 +706,10 @@ class GuiLogic():
ret = self.cb_halbzeugnummer(value)
elif key == 'cb_halbzeuglaenge':
ret = self.cb_halbzeuglaenge(value)
elif key == 'cb_freigabevermerk':
ret = self.cb_freigabevermerk(value)
elif key == 'cb_zusatzinfos_auto_text':
ret = self.cb_zusatzinfos_auto_text(value)
else:
raise Exception("this callback does not exist "+key)
return ret
@@ -693,7 +723,7 @@ class GuiLogic():
ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu', 'cb_3Dmodel_neu', 'cb_halbzeugOhneSaege_neu', 'cb_ruestcode_neu',
'cb_fertigungsart_neu', 'cb_allgemeintoleranz_neu', 'cb_fosGruppe_neu', 'cb_kalkulationsart_neu', 'cb_beschaffungsart_neu',
'cb_mengeneinheit_neu', 'cb_halbzeug_neu', 'cb_dispogruppe_neu', 'cb_dispolaufgruppe_neu', 'cb_hersteller_neu', 'cb_werkstoffdiskrepanz',
'cb_werkstofftyp_neu', 'cb_material_neu', 'cb_oberflaeche_neu', 'cb_farbe_neu', 'cb_herstteilenr_neu']
'cb_werkstofftyp_neu', 'cb_material_neu', 'cb_oberflaeche_neu', 'cb_farbe_neu', 'cb_herstteilenr_neu', 'cb_freigabevermerk']
elif key == 'cb_neuaufbau':
ret = []
elif key == 'cb_aus_halbzeug_neu':
@@ -709,9 +739,11 @@ class GuiLogic():
elif key == 'cb_halbzeugOhneSaege_neu':
ret = []
elif key == 'cb_ruestcode_neu':
ret = [ 'cb_halbzeugOhneSaege_neu', 'cb_mengeneinheit_neu', 'cb_halbzeug_neu']
ret = [ 'cb_halbzeugOhneSaege_neu', 'cb_mengeneinheit_neu', 'cb_halbzeug_neu', 'cb_zusatzinfos_auto_text']
elif key == 'cb_fertigungsart_neu':
ret = ['cb_allgemeintoleranz_neu']
elif key == 'cb_allgemeintoleranz_neu':
ret = []
elif key == 'cb_fosGruppe_neu':
ret = []
elif key == 'cb_kalkulationsart_neu':
@@ -729,7 +761,7 @@ class GuiLogic():
elif key == 'cb_hersteller_neu':
ret = []
elif key == 'cb_werkstoffdiskrepanz':
ret = []
ret = ['cb_zusatzinfos_auto_text']
elif key == 'cb_werkstofftyp_neu':
ret = ['cb_material_neu']
elif key == 'cb_material_neu':
@@ -751,6 +783,10 @@ class GuiLogic():
ret = []
elif key == 'cb_3dsuchen':
ret = []
elif key == 'cb_freigabevermerk':
ret = []
elif key == 'cb_zusatzinfos_auto_text':
ret = []
else:
raise Exception("this callback does not exist "+key)
return ret
@@ -842,7 +878,6 @@ class GuiLogic():
else:
self.set_state('halbzeuglaenge_neu', 'disabled')
def cb_halbzeugoberflaeche(self, selected):
ret = dict()
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
@@ -1308,7 +1343,7 @@ class GuiLogic():
def cb_halbzeug_neu(self, selected):
ret = dict()
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
rcode = self._model.get_gui_data("ruestcode_sivas")
halbzeug = self._model.get_gui_data("halbzeug_sivas")
@@ -1616,6 +1651,65 @@ class GuiLogic():
return ret
def cb_freigabevermerk(self, selected):
ret = dict()
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
version_sivas = str(self._model.get_gui_data("version_sivas"))
freigabe_sivas = self._model.get_gui_data("freigabevermerk_sivas")
if selected is None:
# Default Vorbelegung
default = ''
if freigabe_sivas is None:
if pdm_kategorie_neu == "Kaufteil":
pass
else:
if re.findall(r'(\d{6})', version_sivas):
default = 'Anpassung an neues Indexsystem, Zeichnung mit Versionsnummer {version} weiterhin gültig'.format(version=version_sivas)
else:
pass
ret['freigabevermerk_neu'] = default
else:
ret['freigabevermerk_neu'] = selected
return ret
def cb_zusatzinfos_auto_text(self, selected):
ret = dict()
aenderungsindex_sivas = self._model.get_gui_data("aenderungsindex_sivas")
truemmer = self._model.get_gui_data("truemmer")
ruestcode = self._model.get_gui_data("ruestcode_sivas")
teilenummer = str(self._model.get_gui_data("teilenummer"))
werkstoffdiskr_sivas = self._model.get_gui_data("werkstoffdiskr_sivas")
if selected is None:
text = ''
blacklist = self._config.get_blacklist()
if aenderungsindex_sivas.islower() :
if truemmer == 'J' or ruestcode == '':
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmer')
if teilenummer in blacklist:
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmerBlacklist')
elif teilenummer in blacklist:
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeBlacklist')
elif werkstoffdiskr_sivas == True:
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeWerkstoffdiskrepanz')
else:
text = self._config.Zusatz.get('EinzelTextblöcke', 'Kleinbuchstabe')
elif truemmer == 'J' or ruestcode == '':
if teilenummer in blacklist:
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerBlacklist')
elif werkstoffdiskr_sivas == True:
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerWerkstoffdiskrepanz')
else:
text = self._config.Zusatz.get('EinzelTextblöcke', 'Truemmer')
ret['zusatzinfos_auto_text'] = text
else:
ret['zusatzinfos_auto_text'] = selected
return ret
if __name__ == "__main__":
pass
+14 -14
View File
@@ -143,7 +143,6 @@ class Controller(Observer):
def get_current_item_id(self):
return self._model.get_current_item_id()
def _load_cid_data2model(self, cid):
"""lädt alle nötigen Daten für diese ID """
# falls eine .json Datei davon im Work Ordner existiert, dann diese zuerst versuchen ins Modell zu laden
@@ -202,10 +201,8 @@ class Controller(Observer):
def get_gui_states(self):
return self._model.get_states()
def set_widget_status(self, widgetname, status):
#self._view.set_widget_status(widgetname, status)
pass
def get_configuration(self):
return self._model.get_configuration()
def message_info(self, title, key, questions='ok'):
return messagebox.showinfo(title, messages[key])
@@ -254,15 +251,18 @@ class Controller(Observer):
self._model.check()
def zuruecksetzen(self):
cid = self.get_current_item_id()
self._model.clear()
self._view.clear_rightframes()
csv_data = self._model.sivas_data_from_csv(str(cid))
# transform the csv keys into keys used behind the gui
gui_data = self._model.csv2guidata(csv_data)
self.set_gui_dict(gui_data)
# create dropdown and other defaults
self._model.set_gui_defaults()
data = dict()
data['halbzeugnummer_neu'] = {'background':'red', 'foreground':'white'}
self._view.configure(data)
# cid = self.get_current_item_id()
# self._model.clear()
# self._view.clear_rightframes()
# csv_data = self._model.sivas_data_from_csv(str(cid))
# # transform the csv keys into keys used behind the gui
# gui_data = self._model.csv2guidata(csv_data)
# self.set_gui_dict(gui_data)
# # create dropdown and other defaults
# self._model.set_gui_defaults()
def suche_3d(self):
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")