diff --git a/lib/caditem.py b/lib/caditem.py index 1977b8e..9715173 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -55,12 +55,12 @@ class CadItem(DataModel): "Freigabevermerk", "ZusaetzlicheInformationen"] gui_data_keys = [ - # Felder der Oberfläche um etwas einzugeben - "asm_id", - "teilenummer", - "datenbank", + # Felder der Oberfläche um etwas einzugeben oberflaeche_neu + "asm_id", + "teilenummer", + "datenbank", "pdm_kategorie_neu", - "neuaufbau", + "neuaufbau", "aus_halbzeug_neu", "halbzeugnummer_neu", "halbzeuglaenge_neu", @@ -174,6 +174,11 @@ class CadItem(DataModel): self._controller = None self._logic = None + def clear(self): + self._data = {} + self._gui_data = {} + self._read_only_items = {} + def add_logic(self, logic): self._logic = logic @@ -280,9 +285,8 @@ class CadItem(DataModel): if "tosgruppe_sivas" in translated_data: text = translated_data["tosgruppe_sivas"] if text =="": - translated_data["beschaffungsart_neu"] = "6" - else: - translated_data["beschaffungsart_neu"] = "" + translated_data["tosgruppe_neu"] = "6" + # Spezial Freigabevermerk if "freigabevermerk_sivas" in translated_data: @@ -438,76 +442,83 @@ class CadItem(DataModel): def check(self): self.check_pflichtfelder() + def check_key_existence(self, key, missing): + if not self.get_gui_data(key): + missing.append(key) + + def check_key_both_columns(self, 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) + def check_pflichtfelder(self): - # Datenbank - # Pflichtfeld: Ja, immer + """Allgemeine Prüfungen: + Solange nicht alle Pflichtfelder einen Wert aufweisen, muss beim Klick auf den Button "Migrieren" eine ERROR-Messagebox erscheinen, in der alle Pflichtfelder aufgelistet sind, die keinen Wert aufweisen + """ + + missing = list() # Teilenummer - # Pflichtfeld: Ja, immer + self.check_key_existence("teilenummer", missing) # Datenbank - # Pflichtfeld: Ja, immer + self.check_key_existence("datenbank", missing) # PDM-Kategorie - # Pflichtfeld: Ja, immer + self.check_key_existence("pdm_kategorie_neu", missing) + # Halbzeugfarbe - # Logik, die steuert, wann es sich um ein Pflichtfeld handelt: - # IF Halbzeugoberfläche == "eloxieren" OR "lackieren" OR "pulverbeschichten": - # Pflichtfeld = True - # ELSE: - # Pflichtfeld = False + 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") + # Lebenszyklusstatus - # Pflichtfeld: Ja, immer + self.check_key_existence("lebenszyklus_status_neu", missing) + # 3D-Modell - # Pflichtfeld: Ja, immer + self.check_key_existence("model3d_neu", missing) # Bezeichnung 1 - # Pflichtfeld: Ja, immer - # Bezeichnung 2 - # Pflichtfeld: Nein + self.check_key_both_columns("bezeichnung1_sivas", "bezeichnung1_neu", missing) # Halbzeug ohne Sägeliste - # Pflichtfeld: Ja, immer + self.check_key_both_columns("halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu", missing) # Rüstcode - # Pflichtfeld: Ja, immer + self.check_key_both_columns("ruestcode_sivas", "ruestcode_neu", missing) + + pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu") # Fertigungsart - # Logik, die steuert, wann es sich um ein Pflichtfeld handelt: - # IF PDM-Kategorie == "Einzelteil" OR "Schweissbaugruppe": - # Pflichtfeld = True - # ELSE IF PDM-Kategorie == "Baugruppe" OR "Kaufteil": - # Pflichtfeld = False + if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe": + self.check_key_existence("fertigungsart_neu", missing) + # Allgemeintoleranz - # Logik, die steuert, wann es sich um ein Pflichtfeld handelt: + self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing) # FOS-Gruppe - # Pflichtfeld: Ja, immer + self.check_key_both_columns("fosGruppe_sivas", "fosGruppe_neu", missing) # Kalkulationsart - # Pflichtfeld: Ja, immer + self.check_key_both_columns("kalkulationsart_sivas", "kalkulationsart_neu", missing) # Beschaffungsart - # Pflichtfeld: Ja, immer + self.check_key_both_columns("beschaffungsart_sivas", "beschaffungsart_neu", missing) # Mengeneinheit - # Pflichtfeld: Ja, immer + self.check_key_both_columns("mengeneinheit_sivas", "mengeneinheit_neu", missing) # Halbzeug - # Pflichtfeld: Ja, immer + self.check_key_both_columns("halbzeug_sivas", "halbzeug_neu", missing) # TOS-Gruppe - # Pflichtfeld: Ja, immer + self.check_key_both_columns("tosgruppe_sivas", "tosgruppe_neu", missing) # Dispogruppe - # Pflichtfeld: Ja, immer + self.check_key_both_columns("dispogruppe_sivas", "dispogruppe_neu", missing) # Dispolaufgruppe - # Pflichtfeld: Ja, immer - # Werkstoffdiskrepanz - # Pflichtfeld: Nein + self.check_key_both_columns("dispolaufgruppe_sivas", "dispolaufgruppe_neu", missing) - # Pflichtfeld (in welchen Fällen ist es ein Pflichtfeld, in welchen nicht) - # IF Aus Halbzeug == True (Haken gesetzt): - # Pflichtfeld = False - # ELSE: - # Pflichtfeld = True + # 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) - # Pflichtfeld (in welchen Fällen ist es ein Pflichtfeld, in welchen nicht) # Änderungstext - # Pflichtfeld: Ja, immer + self.check_key_both_columns("aenderungstext_sivas", "aenderungstext_neu", missing) # Freigabevermerk - # Pflichtfeld: Ja, immer + self.check_key_both_columns("freigabevermerk_sivas", "freigabevermerk_neu", missing) # Automatische Zusatzinformationen - # Pflichtfeld: Nein - # Allgemeine Prüfungen: - # Solange nicht alle Pflichtfelder einen Wert aufweisen, muss beim Klick auf den Button "Migrieren" eine ERROR-Messagebox erscheinen, in der alle Pflichtfelder aufgelistet sind, die keinen Wert aufweisen - pass + self.check_key_existence("zusatzinfos_auto_text", missing) + return missing class CadItemRepository: """ @@ -559,7 +570,9 @@ class GuiLogic(): self.call_and_set_data('cb_pdm_kategorie_neu') self.call_and_set_data('cb_aus_halbzeug_neu') self.call_and_set_data('cb_ruestcode_neu') - # self.call_and_set_data('cb_lebenszyklus_status_neu') + self.call_and_set_data('cb_lebenszyklus_status_neu') + self.call_and_set_data('cb_fosGruppe_neu') + # self.call_and_set_data('cb_3Dmodel_neu') def call_and_set_data(self, callbackfunc): @@ -649,9 +662,7 @@ class GuiLogic(): elif key == 'cb_ruestcode_neu': ret = [ 'cb_halbzeugOhneSaege_neu', 'cb_mengeneinheit_neu', 'cb_halbzeug_neu'] elif key == 'cb_fertigungsart_neu': - ret = [] - elif key == 'cb_allgemeintoleranz_neu': - ret = ['cb_fertigungsart_neu'] + ret = ['cb_allgemeintoleranz_neu'] elif key == 'cb_fosGruppe_neu': ret = [] elif key == 'cb_kalkulationsart_neu': @@ -671,9 +682,9 @@ class GuiLogic(): elif key == 'cb_werkstoffdiskrepanz': ret = [] elif key == 'cb_werkstofftyp_neu': - ret = [] + ret = ['cb_material_neu'] elif key == 'cb_material_neu': - ret = [] + ret = ['cb_oberflaeche_neu'] elif key == 'cb_oberflaeche_neu': ret = ['cb_farbe_neu'] elif key == 'cb_farbe_neu': @@ -935,8 +946,8 @@ class GuiLogic(): if selected is None: # Default Vorbelegung default = '' - if fertigungsart_sivas == '' or fertigungsart_sivas != "schweissen": - default = "schweissen" + if fertigungsart_sivas == '' or fertigungsart_sivas != "SW - schweißen": + default = "SW - schweißen" else: default = "" ret['fertigungsart_neu'] = default @@ -956,31 +967,31 @@ class GuiLogic(): elif pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe": cblist = None if pdm_kategorie_neu == "Einzelteil": - if fertigungsart == "3D-drucken": + if fertigungsart == "3D - 3D drucken": section = "Allgemeintoleranz3DDruck" - elif fertigungsart == "biegen": + elif fertigungsart == "BI - biegen": section = "AllgemeintoleranzSpanen" - elif fertigungsart == "drehen": + elif fertigungsart == "DR - drehen": section = "AllgemeintoleranzSpanen" - elif fertigungsart == "extrudieren": + elif fertigungsart == "EX - extrudieren": section = "AllgemeintoleranzExtrudieren" - elif fertigungsart == "fräsen": + elif fertigungsart == "FR - fräsen": section = "AllgemeintoleranzSpanen" - elif fertigungsart == "gießen": + elif fertigungsart == "GI - gießen": section = "AllgemeintoleranzGiessen" - elif fertigungsart == "laser-/wasserstrahlschneiden": + elif fertigungsart == "LW - laser- und wasserstrahlschneiden": section = "AllgemeintoleranzSpanen" - elif fertigungsart == "verpressen": + elif fertigungsart == "PR - verpressen": section = "AllgemeintoleranzVerpressen" - elif fertigungsart == "sägen": + elif fertigungsart == "SA - sägen": section = "AllgemeintoleranzSpanen" - elif fertigungsart == "strangpressen": + elif fertigungsart == "SN - strangpressen": section = "AllgemeintoleranzStrangpressen" - elif fertigungsart == "spritzgießen": + elif fertigungsart == "SP - spritzgießen": section = "AllgemeintoleranzSpritzgiessen" - elif fertigungsart == "stanzen": + elif fertigungsart == "ST - stanzen": section = "AllgemeintoleranzStanzen" - elif fertigungsart == "schweissen": + elif fertigungsart == "SW - schweißen": section = "AllgemeintoleranzSchweissen" else: raise Exception("no such fertigungsart "+ fertigungsart) @@ -996,38 +1007,38 @@ class GuiLogic(): elif pdm_kategorie_neu == "Schweissbaugruppe": default = "EN ISO 13920-BF" else: - if fertigungsart == "3D-drucken": + if fertigungsart == "3D - 3D-drucken": default = "ISO 2768:1991-mK" - elif fertigungsart == "biegen": + elif fertigungsart == "BI - biegen": default = "ISO 2768:1991-mK" - elif fertigungsart == "drehen": + elif fertigungsart == "DR - drehen": default = "ISO 2768:1991-mK" - elif fertigungsart == "extrudieren": + elif fertigungsart == "EX - extrudieren": default = "DIN 16941 - 3A" - elif fertigungsart == "fräsen": + elif fertigungsart == "FR - fräsen": default = "ISO 2768:1991-mK" - elif fertigungsart == "gießen": + elif fertigungsart == "GI - gießen": default = "ISO 8062-3 - DCTG 10" - elif fertigungsart == "laser-/wasserstrahlschneiden": + elif fertigungsart == "LW - laser-/wasserstrahlschneiden": default = "ISO 2768:1991-mK" - elif fertigungsart == "verpressen": + elif fertigungsart == "PR - verpressen": default = "ISO 2768:1991-mK" - elif fertigungsart == "sägen": + elif fertigungsart == "SA - sägen": default = "ISO 2768:1991-mK" - elif fertigungsart == "strangpressen": + elif fertigungsart == "SN - strangpressen": default = "EN 12020-2" - elif fertigungsart == "spritzgießen": + elif fertigungsart == "SP - spritzgießen": default = "ISO 20457 - TG5" - elif fertigungsart == "stanzen": + elif fertigungsart == "ST - stanzen": default = "DIN 6930-2 - m" - elif fertigungsart == "schweissen": + elif fertigungsart == "SW - schweißen": # TODO default = "" else: raise Exception("no such fertigungsart "+ fertigungsart) - ret['fertigungsart_neu'] = default + ret['allgemeintoleranz_neu'] = default else: - ret['fertigungsart_neu'] = selected + ret['allgemeintoleranz_neu'] = selected return ret @@ -1039,6 +1050,10 @@ class GuiLogic(): ret['fosGruppe_neu'] = '' if pdm_kategorie_neu == "Kaufteil": cblist = self._config.Allgemein.get_options("FOS_Gruppe") + elif pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe": + cblist = ['1 - Baugruppe'] + elif pdm_kategorie_neu == "Einzelteil": + cblist = ['0 - Einzelteil'] else: cblist = None ret['cb_fosGruppe_neu'] = cblist @@ -1046,15 +1061,29 @@ class GuiLogic(): if selected is None: # Default Vorbelegung default = '' - if pdm_kategorie_neu == "Baugruppe": - if fos_gruppe == "0 - Einzelteil" or fos_gruppe == "": + if fos_gruppe == None: + if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe": default = "1 - Baugruppe" - else: - if fos_gruppe == "1 - Baugruppe" or fos_gruppe == "": + elif pdm_kategorie_neu == "Einzelteil": default = "0 - Einzelteil" + elif pdm_kategorie_neu == "Kaufteil": + default = cblist[0] ret['fosGruppe_neu'] = default else: ret['fosGruppe_neu'] = selected + + # if selected is None: + # # Default Vorbelegung + # default = '' + # if pdm_kategorie_neu == "Baugruppe": + # if fos_gruppe == "0 - Einzelteil" or fos_gruppe == None: + # default = "1 - Baugruppe" + # else: + # if fos_gruppe == "1 - Baugruppe" or fos_gruppe == None: + # default = "0 - Einzelteil" + # ret['fosGruppe_neu'] = default + # else: + # ret['fosGruppe_neu'] = selected return ret def cb_kalkulationsart_neu(self, selected): @@ -1286,7 +1315,7 @@ class GuiLogic(): default = mat['Message'] else: # TODO beim migrieren die Meldung bringen - self._model.message_info('Materialinformation', 'material_infos') + #self._model.message_info('Materialinformation', 'material_infos') pass else: pass