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
+56 -44
View File
@@ -86,7 +86,7 @@ class CadItem(DataModel):
"ersatzfuer_sivas", "ersatzfuer_neu",
"ersetztdurch_sivas", "ersetztdurch_neu",
"herstteilenr_sivas", "herstteilenr_neu",
"werkstoffdiskr_sivas",
"werkstoffdiskr_neu",
"werkstofftyp_sivas", "werkstofftyp_neu",
"material_sivas", "material_neu",
"oberflaeche_neu",
@@ -185,7 +185,6 @@ 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
@@ -284,6 +283,10 @@ class CadItem(DataModel):
def _transform_content_from_csv(self, translated_data, author=None):
""""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
if 'aenderungstext_sivas' in translated_data:
text= translated_data["aenderungstext_sivas"]
@@ -494,17 +497,20 @@ class CadItem(DataModel):
return self._controller.message_error(title, key)
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):
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_neu):
missing.append(key_sivas)
missing.append(key_neu)
missing.append(mess)
def check_pflichtfelder(self):
"""Allgemeine Prüfungen:
@@ -513,65 +519,66 @@ class CadItem(DataModel):
missing = list()
# Teilenummer
self.check_key_existence("teilenummer", missing)
self.check_key_existence( 'Teilenummer', "teilenummer", missing)
# Datenbank
self.check_key_existence("datenbank", missing)
self.check_key_existence("Datenbank", "datenbank", missing)
# PDM-Kategorie
self.check_key_existence("pdm_kategorie_neu", missing)
self.check_key_existence("PDM-Kategorie", "pdm_kategorie_neu", missing)
# Halbzeugfarbe
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 not self.get_gui_data("halbzeugfarbe_neu"):
missing.append("halbzeugfarbe_neu")
missing.append("Halbzeugfarbe")
# Lebenszyklusstatus
self.check_key_existence("lebenszyklus_status_neu", missing)
self.check_key_existence("Lebenszyklusstatus", "lebenszyklus_status_neu", missing)
# 3D-Modell
self.check_key_existence("model3d_neu", missing)
self.check_key_existence("3D-Model", "model3d_neu", missing)
# 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
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
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")
# Fertigungsart
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
self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing)
self.check_key_both_columns("Allgemeintoleranz", "allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing)
# 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
self.check_key_both_columns("kalkulationsart_sivas", "kalkulationsart_neu", missing)
self.check_key_both_columns("Kalkulationsart", "kalkulationsart_sivas", "kalkulationsart_neu", missing)
# Beschaffungsart
self.check_key_both_columns("beschaffungsart_sivas", "beschaffungsart_neu", missing)
self.check_key_both_columns("Beschaffungsart", "beschaffungsart_sivas", "beschaffungsart_neu", missing)
# Mengeneinheit
self.check_key_both_columns("mengeneinheit_sivas", "mengeneinheit_neu", missing)
self.check_key_both_columns("Mengeneinheit", "mengeneinheit_sivas", "mengeneinheit_neu", missing)
# Halbzeug
self.check_key_both_columns("halbzeug_sivas", "halbzeug_neu", missing)
self.check_key_both_columns("Halbzeug", "halbzeug_sivas", "halbzeug_neu", missing)
# TOS-Gruppe
self.check_key_both_columns("tosgruppe_sivas", "tosgruppe_neu", missing)
self.check_key_both_columns("Tosgruppe", "tosgruppe_sivas", "tosgruppe_neu", missing)
# Dispogruppe
self.check_key_both_columns("dispogruppe_sivas", "dispogruppe_neu", missing)
self.check_key_both_columns("Dispogruppe", "dispogruppe_sivas", "dispogruppe_neu", missing)
# Dispolaufgruppe
self.check_key_both_columns("dispolaufgruppe_sivas", "dispolaufgruppe_neu", missing)
self.check_key_both_columns("Dispolaufgruppe", "dispolaufgruppe_sivas", "dispolaufgruppe_neu", missing)
# Werkstofftyp
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu")
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
self.check_key_both_columns("aenderungstext_sivas", "aenderungstext_neu", missing)
self.check_key_both_columns("Änderungstext", "aenderungstext_sivas", "aenderungstext_neu", missing)
# Freigabevermerk
self.check_key_both_columns("freigabevermerk_sivas", "freigabevermerk_neu", missing)
self.check_key_both_columns("Freigabevermerk", "freigabevermerk_sivas", "freigabevermerk_neu", missing)
# Automatische Zusatzinformationen
self.check_key_existence("zusatzinfos_auto_text", missing)
self.check_key_existence("Automatische Zusatzinformationen", "zusatzinfos_auto_text", missing)
return missing
class CadItemRepository:
@@ -1064,7 +1071,6 @@ class GuiLogic():
def cb_fertigungsart_neu(self, selected):
ret = dict()
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":
self.set_state('cb_fertigungsart_neu', 'disabled')
@@ -1082,13 +1088,7 @@ class GuiLogic():
ret['cb_fertigungsart_neu'] = ''
if selected is None:
# Default Vorbelegung
default = ''
if fertigungsart_sivas == '' or fertigungsart_sivas != "SW - schweißen":
default = "SW - schweißen"
else:
default = ""
ret['fertigungsart_neu'] = default
ret['fertigungsart_neu'] = ''
else:
ret['fertigungsart_neu'] = selected
return ret
@@ -1105,7 +1105,9 @@ class GuiLogic():
elif pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe":
cblist = None
if pdm_kategorie_neu == "Einzelteil":
if fertigungsart == "3D - 3D drucken":
if fertigungsart == "3D - 3D-drucken":
section = "Allgemeintoleranz3DDruck"
elif fertigungsart == "3D - 3D drucken":
section = "Allgemeintoleranz3DDruck"
elif fertigungsart == "BI - biegen":
section = "AllgemeintoleranzSpanen"
@@ -1131,9 +1133,14 @@ class GuiLogic():
section = "AllgemeintoleranzStanzen"
elif fertigungsart == "SW - schweißen":
section = "AllgemeintoleranzSchweissen"
elif fertigungsart == "":
section = None
else:
raise Exception("no such fertigungsart "+ fertigungsart)
cblist = self._config.Fertigung.get_list_in_section(section)
if section:
cblist = self._config.Fertigung.get_list_in_section(section)
else:
cblist = None
else:
cblist = None
ret['cb_allgemeintoleranz_neu'] = cblist
@@ -1147,6 +1154,8 @@ class GuiLogic():
else:
if fertigungsart == "3D - 3D-drucken":
default = "ISO 2768:1991-mK"
elif fertigungsart == "3D - 3D drucken":
default = "ISO 2768:1991-mK"
elif fertigungsart == "BI - biegen":
default = "ISO 2768:1991-mK"
elif fertigungsart == "DR - drehen":
@@ -1172,6 +1181,8 @@ class GuiLogic():
elif fertigungsart == "SW - schweißen":
# TODO
default = ""
elif fertigungsart == "":
default = ""
else:
raise Exception("no such fertigungsart "+ fertigungsart)
ret['allgemeintoleranz_neu'] = default
@@ -1680,7 +1691,7 @@ class GuiLogic():
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")
werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu")
if selected is None:
text = ''
@@ -1692,14 +1703,15 @@ class GuiLogic():
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmerBlacklist')
elif teilenummer in blacklist:
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeBlacklist')
elif werkstoffdiskr_sivas == True:
elif werkstoffdiskr_neu == True:
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeWerkstoffdiskrepanz')
else:
text = self._config.Zusatz.get('EinzelTextblöcke', 'Kleinbuchstabe')
text = text.format(aenderungsindex=aenderungsindex_sivas)
elif truemmer == 'J' or ruestcode == '':
if teilenummer in blacklist:
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerBlacklist')
elif werkstoffdiskr_sivas == True:
elif werkstoffdiskr_neu == True:
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerWerkstoffdiskrepanz')
else:
text = self._config.Zusatz.get('EinzelTextblöcke', 'Truemmer')
+14 -3
View File
@@ -32,6 +32,7 @@ messages = {
"werkstoff_not_exist":'Werkstoff falsch. Bitte korrigieren!',
"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!',
"missing_data":'Fehlende Angaben in der Oberfläche: {Labels}',
}
@@ -207,8 +208,15 @@ class Controller(Observer):
def message_info(self, title, key, questions='ok'):
return messagebox.showinfo(title, messages[key])
def message_error(self, title, key):
return messagebox.showerror(title, messages[key])
def message_error(self, title, key, values):
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):
if not self._model:
@@ -248,7 +256,10 @@ class Controller(Observer):
self.refresh_gui()
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):
data = dict()
+6
View File
@@ -447,6 +447,11 @@ class ZusatzConfig(IniBasedConfig):
def __init__(self, config_dir='.', config_file='Zusatzinformationen.cfg'):
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:
"""Sammlung aller Configdateien """
def __init__(self, cfg_dir):
@@ -461,6 +466,7 @@ class Configs:
self.Pfade = PfadConfig(cfg_dir)
self.Werkstoffe = WerkstoffeConfig(cfg_dir)
self.Zusatz = ZusatzConfig(cfg_dir)
self.ERP = ERPConfig(cfg_dir)
self.TOSGruppen = TOSGroupsConfig(cfg_dir)
self.Materialien = MaterialTransConfig(cfg_dir)