Check der Inhalte mit beider Spalten mit nur einem Rückgabewert versehen. Ansonsten unverständliche für den Nutzer. 3D Druck Keyword im Ruledesigner unterschiedlich. Beide Varianten erlaubt. Rückgabe von keiner Fertigungsart führt zu keinen Defaultwert der folgenden Comboboxen. Keine Exception deswegen mehr

This commit is contained in:
2024-03-12 17:28:58 +01:00
parent b6f9f1a4bf
commit 1e917e5bbd
3 changed files with 76 additions and 47 deletions
+55 -43
View File
@@ -86,7 +86,7 @@ class CadItem(DataModel):
"ersatzfuer_sivas", "ersatzfuer_neu", "ersatzfuer_sivas", "ersatzfuer_neu",
"ersetztdurch_sivas", "ersetztdurch_neu", "ersetztdurch_sivas", "ersetztdurch_neu",
"herstteilenr_sivas", "herstteilenr_neu", "herstteilenr_sivas", "herstteilenr_neu",
"werkstoffdiskr_sivas", "werkstoffdiskr_neu",
"werkstofftyp_sivas", "werkstofftyp_neu", "werkstofftyp_sivas", "werkstofftyp_neu",
"material_sivas", "material_neu", "material_sivas", "material_neu",
"oberflaeche_neu", "oberflaeche_neu",
@@ -185,7 +185,6 @@ class CadItem(DataModel):
self._read_only_items = {} self._read_only_items = {}
if self._logic: if self._logic:
self._logic.clear_states() self._logic.clear_states()
self._logic.clear_configurations()
def add_logic(self, logic): def add_logic(self, logic):
self._logic = logic self._logic = logic
@@ -284,6 +283,10 @@ class CadItem(DataModel):
def _transform_content_from_csv(self, translated_data, author=None): def _transform_content_from_csv(self, translated_data, author=None):
""""baut die Texte aus der csv Datei nach dem Einladen um""" """"baut die Texte aus der csv Datei nach dem Einladen um"""
# default setzen
if 'datenbank' not in translated_data:
translated_data["datenbank"] = 'Produktiv'
# Änderungstext sollte Author enthalten wenn einer gegeben ist # Änderungstext sollte Author enthalten wenn einer gegeben ist
if 'aenderungstext_sivas' in translated_data: if 'aenderungstext_sivas' in translated_data:
text= translated_data["aenderungstext_sivas"] text= translated_data["aenderungstext_sivas"]
@@ -494,17 +497,20 @@ class CadItem(DataModel):
return self._controller.message_error(title, key) return self._controller.message_error(title, key)
def check(self): def check(self):
self.check_pflichtfelder() res = self.check_pflichtfelder()
if len(res) > 0:
return (False, res)
else:
return (True, [])
def check_key_existence(self, key, missing): def check_key_existence(self, mess, key, missing):
if not self.get_gui_data(key): if not self.get_gui_data(key):
missing.append(key) missing.append(mess)
def check_key_both_columns(self, key_sivas, key_neu, missing): def check_key_both_columns(self, mess, key_sivas, key_neu, missing):
if not self.get_gui_data(key_sivas): if not self.get_gui_data(key_sivas):
if not self.get_gui_data(key_neu): if not self.get_gui_data(key_neu):
missing.append(key_sivas) missing.append(mess)
missing.append(key_neu)
def check_pflichtfelder(self): def check_pflichtfelder(self):
"""Allgemeine Prüfungen: """Allgemeine Prüfungen:
@@ -513,65 +519,66 @@ class CadItem(DataModel):
missing = list() missing = list()
# Teilenummer # Teilenummer
self.check_key_existence("teilenummer", missing) self.check_key_existence( 'Teilenummer', "teilenummer", missing)
# Datenbank # Datenbank
self.check_key_existence("datenbank", missing) self.check_key_existence("Datenbank", "datenbank", missing)
# PDM-Kategorie # PDM-Kategorie
self.check_key_existence("pdm_kategorie_neu", missing) self.check_key_existence("PDM-Kategorie", "pdm_kategorie_neu", missing)
# Halbzeugfarbe # Halbzeugfarbe
hblzeug_oberfläche = self.get_gui_data("oberflaeche_neu") hblzeug_oberfläche = self.get_gui_data("oberflaeche_neu")
if hblzeug_oberfläche == "eloxieren" or hblzeug_oberfläche == "lackieren" or hblzeug_oberfläche == "pulverbeschichten": if hblzeug_oberfläche == "eloxieren" or hblzeug_oberfläche == "lackieren" or hblzeug_oberfläche == "pulverbeschichten":
if not self.get_gui_data("halbzeugfarbe_neu"): if not self.get_gui_data("halbzeugfarbe_neu"):
missing.append("halbzeugfarbe_neu") missing.append("Halbzeugfarbe")
# Lebenszyklusstatus # Lebenszyklusstatus
self.check_key_existence("lebenszyklus_status_neu", missing) self.check_key_existence("Lebenszyklusstatus", "lebenszyklus_status_neu", missing)
# 3D-Modell # 3D-Modell
self.check_key_existence("model3d_neu", missing) self.check_key_existence("3D-Model", "model3d_neu", missing)
# Bezeichnung 1 # Bezeichnung 1
self.check_key_both_columns("bezeichnung1_sivas", "bezeichnung1_neu", missing) self.check_key_both_columns("Bezeichnung 1", "bezeichnung1_sivas", "bezeichnung1_neu", missing)
# Halbzeug ohne Sägeliste # Halbzeug ohne Sägeliste
self.check_key_both_columns("halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu", missing) self.check_key_both_columns("Halbzeug ohne Sägeliste", "halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu", missing)
# Rüstcode # Rüstcode
self.check_key_both_columns("ruestcode_sivas", "ruestcode_neu", missing) self.check_key_both_columns("Rüstcode", "ruestcode_sivas", "ruestcode_neu", missing)
pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu") pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu")
# Fertigungsart # Fertigungsart
if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe": if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.check_key_existence("fertigungsart_neu", missing) self.check_key_both_columns("Fertigungsart", "fertigungsart_sivas", "fertigungsart_neu", missing)
# Allgemeintoleranz # Allgemeintoleranz
self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing) self.check_key_both_columns("Allgemeintoleranz", "allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing)
# FOS-Gruppe # FOS-Gruppe
self.check_key_both_columns("fosGruppe_sivas", "fosGruppe_neu", missing) self.check_key_both_columns("FOS-Gruppe", "fosGruppe_sivas", "fosGruppe_neu", missing)
# Kalkulationsart # Kalkulationsart
self.check_key_both_columns("kalkulationsart_sivas", "kalkulationsart_neu", missing) self.check_key_both_columns("Kalkulationsart", "kalkulationsart_sivas", "kalkulationsart_neu", missing)
# Beschaffungsart # Beschaffungsart
self.check_key_both_columns("beschaffungsart_sivas", "beschaffungsart_neu", missing) self.check_key_both_columns("Beschaffungsart", "beschaffungsart_sivas", "beschaffungsart_neu", missing)
# Mengeneinheit # Mengeneinheit
self.check_key_both_columns("mengeneinheit_sivas", "mengeneinheit_neu", missing) self.check_key_both_columns("Mengeneinheit", "mengeneinheit_sivas", "mengeneinheit_neu", missing)
# Halbzeug # Halbzeug
self.check_key_both_columns("halbzeug_sivas", "halbzeug_neu", missing) self.check_key_both_columns("Halbzeug", "halbzeug_sivas", "halbzeug_neu", missing)
# TOS-Gruppe # TOS-Gruppe
self.check_key_both_columns("tosgruppe_sivas", "tosgruppe_neu", missing) self.check_key_both_columns("Tosgruppe", "tosgruppe_sivas", "tosgruppe_neu", missing)
# Dispogruppe # Dispogruppe
self.check_key_both_columns("dispogruppe_sivas", "dispogruppe_neu", missing) self.check_key_both_columns("Dispogruppe", "dispogruppe_sivas", "dispogruppe_neu", missing)
# Dispolaufgruppe # Dispolaufgruppe
self.check_key_both_columns("dispolaufgruppe_sivas", "dispolaufgruppe_neu", missing) self.check_key_both_columns("Dispolaufgruppe", "dispolaufgruppe_sivas", "dispolaufgruppe_neu", missing)
# Werkstofftyp # Werkstofftyp
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu") aus_halbzeug = self.get_gui_data("aus_halbzeug_neu")
if aus_halbzeug is False: if aus_halbzeug is False:
self.check_key_both_columns("werkstofftyp_sivas", "werkstofftyp_neu", missing) self.check_key_both_columns("Werkstofftyp", "werkstofftyp_sivas", "werkstofftyp_neu", missing)
# Änderungstext # Änderungstext
self.check_key_both_columns("aenderungstext_sivas", "aenderungstext_neu", missing) self.check_key_both_columns("Änderungstext", "aenderungstext_sivas", "aenderungstext_neu", missing)
# Freigabevermerk # Freigabevermerk
self.check_key_both_columns("freigabevermerk_sivas", "freigabevermerk_neu", missing) self.check_key_both_columns("Freigabevermerk", "freigabevermerk_sivas", "freigabevermerk_neu", missing)
# Automatische Zusatzinformationen # Automatische Zusatzinformationen
self.check_key_existence("zusatzinfos_auto_text", missing) self.check_key_existence("Automatische Zusatzinformationen", "zusatzinfos_auto_text", missing)
return missing return missing
class CadItemRepository: class CadItemRepository:
@@ -1064,7 +1071,6 @@ class GuiLogic():
def cb_fertigungsart_neu(self, selected): def cb_fertigungsart_neu(self, selected):
ret = dict() ret = dict()
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu") pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
fertigungsart_sivas = self._model.get_gui_data("fertigungsart_sivas")
if pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe": if pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.set_state('cb_fertigungsart_neu', 'disabled') self.set_state('cb_fertigungsart_neu', 'disabled')
@@ -1082,13 +1088,7 @@ class GuiLogic():
ret['cb_fertigungsart_neu'] = '' ret['cb_fertigungsart_neu'] = ''
if selected is None: if selected is None:
# Default Vorbelegung ret['fertigungsart_neu'] = ''
default = ''
if fertigungsart_sivas == '' or fertigungsart_sivas != "SW - schweißen":
default = "SW - schweißen"
else:
default = ""
ret['fertigungsart_neu'] = default
else: else:
ret['fertigungsart_neu'] = selected ret['fertigungsart_neu'] = selected
return ret return ret
@@ -1105,7 +1105,9 @@ class GuiLogic():
elif pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe": elif pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe":
cblist = None cblist = None
if pdm_kategorie_neu == "Einzelteil": if pdm_kategorie_neu == "Einzelteil":
if fertigungsart == "3D - 3D drucken": if fertigungsart == "3D - 3D-drucken":
section = "Allgemeintoleranz3DDruck"
elif fertigungsart == "3D - 3D drucken":
section = "Allgemeintoleranz3DDruck" section = "Allgemeintoleranz3DDruck"
elif fertigungsart == "BI - biegen": elif fertigungsart == "BI - biegen":
section = "AllgemeintoleranzSpanen" section = "AllgemeintoleranzSpanen"
@@ -1131,11 +1133,16 @@ class GuiLogic():
section = "AllgemeintoleranzStanzen" section = "AllgemeintoleranzStanzen"
elif fertigungsart == "SW - schweißen": elif fertigungsart == "SW - schweißen":
section = "AllgemeintoleranzSchweissen" section = "AllgemeintoleranzSchweissen"
elif fertigungsart == "":
section = None
else: else:
raise Exception("no such fertigungsart "+ fertigungsart) raise Exception("no such fertigungsart "+ fertigungsart)
if section:
cblist = self._config.Fertigung.get_list_in_section(section) cblist = self._config.Fertigung.get_list_in_section(section)
else: else:
cblist = None cblist = None
else:
cblist = None
ret['cb_allgemeintoleranz_neu'] = cblist ret['cb_allgemeintoleranz_neu'] = cblist
if selected is None: if selected is None:
@@ -1147,6 +1154,8 @@ class GuiLogic():
else: else:
if fertigungsart == "3D - 3D-drucken": if fertigungsart == "3D - 3D-drucken":
default = "ISO 2768:1991-mK" default = "ISO 2768:1991-mK"
elif fertigungsart == "3D - 3D drucken":
default = "ISO 2768:1991-mK"
elif fertigungsart == "BI - biegen": elif fertigungsart == "BI - biegen":
default = "ISO 2768:1991-mK" default = "ISO 2768:1991-mK"
elif fertigungsart == "DR - drehen": elif fertigungsart == "DR - drehen":
@@ -1172,6 +1181,8 @@ class GuiLogic():
elif fertigungsart == "SW - schweißen": elif fertigungsart == "SW - schweißen":
# TODO # TODO
default = "" default = ""
elif fertigungsart == "":
default = ""
else: else:
raise Exception("no such fertigungsart "+ fertigungsart) raise Exception("no such fertigungsart "+ fertigungsart)
ret['allgemeintoleranz_neu'] = default ret['allgemeintoleranz_neu'] = default
@@ -1680,7 +1691,7 @@ class GuiLogic():
truemmer = self._model.get_gui_data("truemmer") truemmer = self._model.get_gui_data("truemmer")
ruestcode = self._model.get_gui_data("ruestcode_sivas") ruestcode = self._model.get_gui_data("ruestcode_sivas")
teilenummer = str(self._model.get_gui_data("teilenummer")) teilenummer = str(self._model.get_gui_data("teilenummer"))
werkstoffdiskr_sivas = self._model.get_gui_data("werkstoffdiskr_sivas") werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu")
if selected is None: if selected is None:
text = '' text = ''
@@ -1692,14 +1703,15 @@ class GuiLogic():
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmerBlacklist') text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmerBlacklist')
elif teilenummer in blacklist: elif teilenummer in blacklist:
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeBlacklist') text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeBlacklist')
elif werkstoffdiskr_sivas == True: elif werkstoffdiskr_neu == True:
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeWerkstoffdiskrepanz') text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeWerkstoffdiskrepanz')
else: else:
text = self._config.Zusatz.get('EinzelTextblöcke', 'Kleinbuchstabe') text = self._config.Zusatz.get('EinzelTextblöcke', 'Kleinbuchstabe')
text = text.format(aenderungsindex=aenderungsindex_sivas)
elif truemmer == 'J' or ruestcode == '': elif truemmer == 'J' or ruestcode == '':
if teilenummer in blacklist: if teilenummer in blacklist:
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerBlacklist') text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerBlacklist')
elif werkstoffdiskr_sivas == True: elif werkstoffdiskr_neu == True:
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerWerkstoffdiskrepanz') text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerWerkstoffdiskrepanz')
else: else:
text = self._config.Zusatz.get('EinzelTextblöcke', 'Truemmer') text = self._config.Zusatz.get('EinzelTextblöcke', 'Truemmer')
+14 -3
View File
@@ -32,6 +32,7 @@ messages = {
"werkstoff_not_exist":'Werkstoff falsch. Bitte korrigieren!', "werkstoff_not_exist":'Werkstoff falsch. Bitte korrigieren!',
"color_not_defined":'Teilenummer kann nicht ohne festgelegte Farbe migriert werden!', "color_not_defined":'Teilenummer kann nicht ohne festgelegte Farbe migriert werden!',
"aenderungstext_too_long":'Änderungstext_weist zu viele Zeichen auf. Bitte auf 400 Zeichen verkürzen!', "aenderungstext_too_long":'Änderungstext_weist zu viele Zeichen auf. Bitte auf 400 Zeichen verkürzen!',
"missing_data":'Fehlende Angaben in der Oberfläche: {Labels}',
} }
@@ -207,8 +208,15 @@ class Controller(Observer):
def message_info(self, title, key, questions='ok'): def message_info(self, title, key, questions='ok'):
return messagebox.showinfo(title, messages[key]) return messagebox.showinfo(title, messages[key])
def message_error(self, title, key): def message_error(self, title, key, values):
return messagebox.showerror(title, messages[key]) text = messages[key]
if 'Labels' in values:
text = text.format(Labels=values['Labels'])
if 'Zeichentyp' in values:
text = text.format(Zeichentyp=values['Zeichentyp'])
if 'Feldname' in values:
text = text.format(Feldname=values['Feldname'])
return messagebox.showerror(title, text)
def callback(self, key, value): def callback(self, key, value):
if not self._model: if not self._model:
@@ -248,7 +256,10 @@ class Controller(Observer):
self.refresh_gui() self.refresh_gui()
def migrieren(self): def migrieren(self):
self._model.check() (ok, missing) = self._model.check()
if ok == False:
labels = ', '.join(missing)
self.message_error('Fehlende Angaben', 'missing_data', {'Labels':labels})
def zuruecksetzen(self): def zuruecksetzen(self):
data = dict() data = dict()
+6
View File
@@ -447,6 +447,11 @@ class ZusatzConfig(IniBasedConfig):
def __init__(self, config_dir='.', config_file='Zusatzinformationen.cfg'): def __init__(self, config_dir='.', config_file='Zusatzinformationen.cfg'):
super().__init__(config_dir, config_file) super().__init__(config_dir, config_file)
class ERPConfig(IniBasedConfig):
"""Auslesen der Zusatzinformationen die aus dem Änderungsindex abgeleitet werden"""
def __init__(self, config_dir='.', config_file='ERP_Item.ini'):
super().__init__(config_dir, config_file)
class Configs: class Configs:
"""Sammlung aller Configdateien """ """Sammlung aller Configdateien """
def __init__(self, cfg_dir): def __init__(self, cfg_dir):
@@ -461,6 +466,7 @@ class Configs:
self.Pfade = PfadConfig(cfg_dir) self.Pfade = PfadConfig(cfg_dir)
self.Werkstoffe = WerkstoffeConfig(cfg_dir) self.Werkstoffe = WerkstoffeConfig(cfg_dir)
self.Zusatz = ZusatzConfig(cfg_dir) self.Zusatz = ZusatzConfig(cfg_dir)
self.ERP = ERPConfig(cfg_dir)
self.TOSGruppen = TOSGroupsConfig(cfg_dir) self.TOSGruppen = TOSGroupsConfig(cfg_dir)
self.Materialien = MaterialTransConfig(cfg_dir) self.Materialien = MaterialTransConfig(cfg_dir)