From 82a84f9df066191cb463e663d893a1e12905654d Mon Sep 17 00:00:00 2001 From: mistangl Date: Tue, 30 Jan 2024 13:11:05 +0100 Subject: [PATCH] Fehlermeldungen und Infotexte eingepflegt. Buttons in die Gui Abfrage dazu und Suche Knopf aufgenommen --- lib/controller.py | 94 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 89 insertions(+), 5 deletions(-) diff --git a/lib/controller.py b/lib/controller.py index bc3687e..63e3454 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -2,10 +2,35 @@ Contains the logic for the MVC of CreoMigrate Gui """ -fehler = { - "werkstoff_typ": 'Werkstoffvorschlag nicht möglich, da Material nicht in Mappingdatei "Materialübersetzung.json" enthalten ist. Bitte nachpflegen' +# Infos und Fehlermeldungen die ausgelöst werden können +messages = { + "rüstcode_infos": 'Bitte Rüstcode auswählen!', + "beschaffungsart_infos": ' Komponenten der Schweißbaugruppe müssen eigene Teilenummern erhalten, falls diese aktuell als Underline-Nummern in der Creo-Baugruppe vorliegen, aber keine eigenen Teilenummern in SIVAS besitzen!', + "mengeneinheit_infos":'Bitte prüfen, ob Mengeneinheit ≠ "M - Meter" korrekt ist!', + "material_infos":'Werkstoffvorschlag nicht möglich, da das Material nicht in der Mappingdatei "Materialübersetzung.json" enthalten ist.\nBitte Werkstoff in dieser Datei nachfpflegen und prüfen, ob der Werkstoff in den nachfolgenden Systemen vorhanden ist:\n- RuleDesigner\n- SIVAS-Produktiv- und Schulungsdatenbank\n- Solid Edge\nWenn nicht, bitte in diesen Systemen ebenfalls nachpflegen!', + "unzulaessige_zeichen":'Unzulässige Zeichen identifiziert:\nZeichen: {Zeichentyp} -> Feld: {Feldname}', + "bezeichnung_zu_gross":'Bezeichnung besitzt mehr als 50 Zeichen. Bitte verkürzen!', + "konflikt_ruestcode_saegeliste":'In Sivas prüfen, wieso Haken bei "Halbzeug ohne Sägeliste" trotz Rüstcode "SRC Standard Rüstcode" gesetzt ist.', + "teilenummre_ohne_ruestcode":'Teilenummer darf nicht ohne Rüstcode migriert werden!', + "fertigungsart":'Fertigungsart falsch. Bitte berichtigen!', + "fos_gruppe":'FOS-Gruppe falsch. Bitte berichtigen!', + "kalkulations_art":'Kalkulationsart falsch. Bitte berichtigen!', + "beschaffungsart":'Beschaffungsart falsch. Bitte berichtigen!', + "mengeneinheit":'Mengeneinheit falsch. Bitte berichtigen!', + "teilenummer_halbzeug":'Teilenummer kann kein Halbzeug sein. Bitte berichtigen!', + "tos_gruppe_not_exist":'TOS-Gruppe exisitert nicht. Bitte eingetragene Gruppennummer korrigieren oder ergänzen!', + "dispo_not_exist":'Datensatz kann nicht ohne Dispogruppe migriert werden. Bitte nachpflegen!', + "dispolauf_not_exist":'Datensatz kann nicht ohne Dispolaufgruppe migriert werden. Bitte nachpflegen!', + "teilenummer_not_exist_infos":'Ersetzte Teilenummer {Ersetzte Teilenummer} exisitert noch nicht in RuleDesigner. Migration trotzdem durchführen?', + "ersatzteilenummer_not_exist_infos":'Ersatz-Teilenummer {Ersatz-Teilenummer} exisitert noch nicht in RuleDesigner. Migration trotzdem durchführen?', + "werkstofftyp_not_exist":'Eingetragener Werkstofftyp exisitert nicht. Bitte korrigeren!', + "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!', } + +# die folgende Hash ist nur für schnelleres Editieren hier gui_data_keys = [ "asm_id", "teilenummer", @@ -66,9 +91,17 @@ gui_data_keys = [ "cb_material_neu", "cb_oberflaeche_neu", "cb_farbe_neu", + # Buttons + "cb_suche_asm", + "cb_speichern", + "cb_migrieren", + "cb_zurücksetzen", ] + class Controller(): + + """ Class for manipulating the model and returning data for the view """ @@ -77,7 +110,6 @@ class Controller(): self.set_view(view) self.logic = None - def add_logic(self, logic): self.logic = logic def remove_logic(self): @@ -98,10 +130,14 @@ class Controller(): def set_current_asm_id(self, asm_id): self.model.set_current_asm_id(asm_id) + def set_current_item_id(self, cid): self.set_gui_data('teilenummer', cid) + + loaded_csv = self.model.sivas_data_from_csv(cid) + gui_dict = self.logic.csv2guidata(loaded_csv) + self.model.set_gui_dict(gui_dict) self.refresh_gui() - self.model.sivas_data_from_csv(cid) def set_red_ids(self, red_ids): @@ -160,6 +196,7 @@ class GuiLogic(): self.model = model # hier holt man die Daten der Configs self.config = configs + # hier sind alle Callbacks bzw. deren Comboboxen self.callbacks = [ 'cb_pdm_kategorie_neu', 'cb_neuaufbau', @@ -185,8 +222,53 @@ class GuiLogic(): 'cb_farbe_neu', 'cb_speichern', 'cb_migrieren', - 'cb_zurücksetzen' + 'cb_zurücksetzen', + 'cb_suche_asm' ] + # dies sind die Excel Headel der SIVAS csv Export Datei + # und wie diese in das Datenmodell der Gui integriert werden kann + self.excel_to_gui = { + "Teilenummer":"teilenummer", + "Bezeichnung1":"bezeichnung1_sivas", + "Bezeichnung2":"bezeichnung2_sivas", + "Beschaffungsart":"beschaffungsart_sivas", + "Mengeneinheit":"mengeneinheit_sivas", + "Halbzeug":"halbzeug_sivas", + "TOS_Gruppe":"tosgruppe_sivas", + "Dispogruppe":"dispolaufgruppe_sivas", + "Dispolaufgruppe":"dispolaufgruppe_sivas", + "ErsatzFuer":"ersatzfuer_neu", + "ErsetztDurch":"ersetztdurch_neu", + "AktuellerIndex":"aenderungsindex_sivas", + "Hersteller":"hersteller_sivas", + "HerstellerTeilenummer":"herstteilenr_sivas", + "Version":"version_sivas", + "HalbzeugExtern":"halbzeug_sivas", + "Werkstoff":"werkstofftyp_sivas", + "Oberfläche":"cb_oberflaeche_neu", + # "Truemmer":"truemmer", + # "HzOhneSaegeliste":"", + "Ruestcode":"ruestcode_sivas", + "Fertigungsart":"fertigungsart_sivas", + "FosGruppe":"fosGruppe_sivas", + "Kalkulationsart":"kalkulationsart_sivas", + #"Indexerfasser":"", + "Aenderungstext":"aenderungstext_sivas", + "Freigabevermerk":"freigabevermerk_sivas", + # "Indexbearbeiter":"in" + } + + def csv2guidata(self, data): + ret = dict() + for k,v in data.items(): + 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 + if "Indexerfasser" in data and "Aenderungstext" in data: + ret["aenderungstext_sivas"] = '{aenderungstext} (von {author})'.format(aenderungstext=data["Aenderungstext"], author=data["Indexerfasser"]) + return ret + def callback(self, key, value): """gibt ein dict zurück, welches neu im Modell gesetzt wird""" @@ -242,6 +324,8 @@ class GuiLogic(): pass elif key == 'cb_zurücksetzen': pass + elif key == 'cb_suche_asm': + pass else: raise Exception("this callback does not exist "+key)