From 39e5f3ddbb3e3b2a47768ad2e2f0c8bfd7511566 Mon Sep 17 00:00:00 2001 From: mistangl Date: Thu, 15 Feb 2024 18:57:05 +0100 Subject: [PATCH] =?UTF-8?q?Logik=20weiter=20gebaut=20bis=20Bezeichnung=201?= =?UTF-8?q?.=20=C3=9Cberpr=C3=BCfungen=20der=20Bezeichner=20nach=20kpl./KP?= =?UTF-8?q?L.=20Abh=C3=A4ngigkeiten=20davor=20wie=20Farbe,=20Oberfl=C3=A4c?= =?UTF-8?q?he=20usw.=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/caditem.py | 66 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/lib/caditem.py b/lib/caditem.py index 3812b3f..b0bbb55 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -2,6 +2,7 @@ import json import pandas as pd import os import glob +import re class DataModel: def __init__(self): @@ -216,7 +217,7 @@ class CadItem(DataModel): for k,v in data: self.set_data(k,v) def set_data(self, key, val): - if key not in self._data_keys: + if key not in self.data_keys: raise Exception("this data can not be set "+ key) else: self._data[key] = val @@ -254,6 +255,12 @@ class CadItem(DataModel): if k in self.excel_to_gui and v is not None: translated_data[self.excel_to_gui[k]] = v + # bezeichnung1_sivas + # 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) + # Spezial: Befüllung von Änderungstext mit dem Author, falls in der .csv vorhanden if "Indexerfasser" in data and "Aenderungstext" in data: translated_data["aenderungstext_sivas"] = '{aenderungstext} (von {author})'.format(aenderungstext=data["Aenderungstext"], author=data["Indexerfasser"]) @@ -261,6 +268,12 @@ class CadItem(DataModel): self.set_gui_dict(translated_data) return translated_data + def get_child_of_id(self, sivasId): + parent_children = self.get_parent_children() + if str(sivasId) in parent_children: + return parent_children[str(sivasId)][0] + else: + return None def sivas_data_from_csv(self, cid): path = os.path.join(self._controller.get_env("data"), cid + '.csv') @@ -420,8 +433,7 @@ class GuiLogic(): self.call_and_set_data('cb_halbzeugoberflaeche') self.call_and_set_data('cb_lebenszyklus_status_neu') self.call_and_set_data('cb_3Dmodel_neu') - - + def call_and_set_data(self, callbackfunc): eval('self._model.set_gui_dict(self.'+callbackfunc+'(None))') @@ -492,9 +504,9 @@ class GuiLogic(): elif key == 'cb_neuaufbau': ret = [] elif key == 'cb_aus_halbzeug_neu': - ret = [] + ret = ['cb_halbzeugoberflaeche', 'cb_halbzeugfarbe'] elif key == "cb_halbzeugoberflaeche": - ret = ['cb_halbzeugfarbe'] + ret = ['cb_halbzeugfarbe', 'cb_halbzeugfarbe'] elif key == "cb_halbzeugfarbe": ret = [] elif key == 'cb_lebenszyklus_status_neu': @@ -561,6 +573,16 @@ class GuiLogic(): ret['cb_pdm_kategorie_neu'] = categories else: ret['pdm_kategorie_neu'] = selected + + # Entry-Abhängigkeit der Bezeichnung 1. keine eigene Callback. Abhängig von der Kategorie + pdm_kat = ret["pdm_kategorie_neu"] + if pdm_kat == "Baugruppe" or pdm_kat == "Schweissbaugruppe": + maxlen = 5 # Längenbeschränkung = 45 Zeichen + else: + maxlen = 10 # Längenbeschränkung = 50 Zeichen + text = self._model.get_gui_data("bezeichnung1_sivas") + if len(text) > maxlen: + ret["bezeichnung1_neu"] = text[0:maxlen] return ret def cb_neuaufbau(self, trueOrfalse): @@ -576,20 +598,32 @@ class GuiLogic(): def cb_aus_halbzeug_neu(self, trueOrfalse): ret = dict() pdm_kat = self._model.get_gui_data("pdm_kategorie_neu") - - # normalerweise ist der Haken nicht gesetz + # normalerweise ist der Haken nicht gesetzt ret["aus_halbzeug_neu"] = False if pdm_kat == "Einzelteil": # nur beim Einzelteil darf der Nutzer überhaupt anwählen ob ein Halbzeug enthalten ist oder nicht if not trueOrfalse is None: ret["aus_halbzeug_neu"] = trueOrfalse + + # Abfrage zur Feld "Halbzeugnummer". Dieses ist nicht gesteuert durch eine eigene Combobox + ret["halbzeugnummer_neu"] = '' + aus_halbzeug = ret["aus_halbzeug_neu"] + if aus_halbzeug == True: + # wenn Kind der aktuellen Teilenummer in RD_Teilenummern.csv ist, dann anzeigen + current_id = self._model.get_current_item_id() + child_id = self._model.get_child_of_id(current_id) + if child_id is not None: + Teilenummern = self._config.TeileNummern.get_ruledesigner_ids() + if child_id in Teilenummern: + ret["halbzeugnummer_neu"] = child_id + return ret def cb_halbzeugoberflaeche(self, selected): ret = dict() aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") - if aus_halbzeug == "True": + if aus_halbzeug == True: oarten = self._config.Oberfläche.get_oberflächen_behandlungen() if selected is None: ret['halbzeugoberflaeche_neu'] = oarten[0] @@ -619,11 +653,7 @@ class GuiLogic(): aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") # setze die Inhalte der abhängigen Comboboxen neu - ret = { - 'halbzeugfarbe_neu': '', - 'cb_halbzeugfarbe': '', - } - if aus_halbzeug == "True": + if aus_halbzeug == True: if halbzeugoberflaeche == "eloxieren": farben_elox = self._config.Farben.get_farben_eloxieren() if selected is None: @@ -638,8 +668,16 @@ class GuiLogic(): ret['cb_halbzeugfarbe'] = farbauswahl else: ret['halbzeugfarbe_neu'] = selected + else: + ret = { + 'halbzeugfarbe_neu': '', + 'cb_halbzeugfarbe': '', + } else: - pass + ret = { + 'halbzeugfarbe_neu': '', + 'cb_halbzeugfarbe': '', + } return ret def cb_3Dmodel_neu(self, selected):