From 6c31b9fbf3d977530a3bc3c4f8fcd4ad865848dd Mon Sep 17 00:00:00 2001 From: Simon Steuer Date: Sun, 13 Jul 2025 18:11:28 +0200 Subject: [PATCH] =?UTF-8?q?siehe=20JIRA=20SUR-645=20-=20Fehlendes=20Leerze?= =?UTF-8?q?ichen=20bei=20Ersetzung=20von=20Semikola=20in=20den=20Feldern?= =?UTF-8?q?=20'=C3=84nderungstext'=20und=20'Freigabevermerk'=20erg=C3=A4nz?= =?UTF-8?q?t=20/=20Logik=20der=20Feldpr=C3=BCfung=20hinsichtlich=20unzul?= =?UTF-8?q?=C3=A4ssigen=20Zeichen=20=C3=BCberarbeitet.=20Konkret=20werden?= =?UTF-8?q?=20nun=20nicht=20mehr=20die=20Werte=20in=20der=20Spalte=20'SIVA?= =?UTF-8?q?S-Werte'=20gepr=C3=BCft,=20wenn=20zus=C3=A4tzlich=20Eintragunge?= =?UTF-8?q?n=20in=20der=20Spalte=20'=C3=9Cberschriebene=20Werte'=20vorlieg?= =?UTF-8?q?en=20/=20Erg=C3=A4nzend=20zu=20SUR-645=20folgende=20Korrektur?= =?UTF-8?q?=20vorgenommen:=20Der=20korrigierte=20Text=20im=20Feld=20'Freig?= =?UTF-8?q?abevermerk'=20(wenn=20Semikola=20im=20SIVAS-Text=20vorlagen)=20?= =?UTF-8?q?wurde=20bisher=20wieder=20gel=C3=B6scht,=20sobald=20eine=20PDM-?= =?UTF-8?q?Kategorie=20ausgew=C3=A4hlt=20wurde.=20Diese=20L=C3=B6schung=20?= =?UTF-8?q?erfolgt=20nun=20nicht=20mehr,=20d.h.=20der=20=C3=BCberschrieben?= =?UTF-8?q?e=20Text=20liegt=20nun=20auch=20nach=20Wahl=20der=20Kategorie?= =?UTF-8?q?=20weiterhin=20vor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/caditem.py | 59 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/lib/caditem.py b/lib/caditem.py index 4bc410d..07d00c0 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -398,7 +398,7 @@ class CadItem(DataModel): text_neu = None # semikolon müssen rausfliegen if re.search(';', text): - text_neu = re.sub(r"\s*;\s*", " /", text, flags=re.I) + text_neu = re.sub(r"\s*;\s*", " / ", text, flags=re.I) if author: if text_neu: text_neu = '{aenderungstext} (von {author})'.format(aenderungstext=text_neu, author=author) @@ -486,7 +486,7 @@ class CadItem(DataModel): if "freigabevermerk_sivas" in translated_data: text = translated_data["freigabevermerk_sivas"] if re.search(';', text): - translated_data["freigabevermerk_neu"] = re.sub(r"\s*;\s*", " /", text, flags=re.I) + translated_data["freigabevermerk_neu"] = re.sub(r"\s*;\s*", " / ", text, flags=re.I) # Spezial Hersteller: aus "80312 - Rehau AG & Co." wird "Rehau AG & Co." if "hersteller_sivas" in translated_data: @@ -659,6 +659,20 @@ class CadItem(DataModel): if not self.get_gui_data(key_sivas): if not self.get_gui_data(key_neu): missing.append(self.key2label[key_neu]) + + def get_key_with_data(self, key_sivas: str, key_neu: str, key_list: list = []): + ''' Vergleicht Inhalt von SIVAS-Feld und überschriebenem Feld: + - Sind nur das überschriebene oder das überschriebe und das SIVAS-Feld befüllt, wird das überschriebene zurückgegeben + - Ist nur das SIVAS-Feld befüllt, wird das SIVAS-Feld zurückgegeben + - Ist keines von beiden Feldern befüllt, wird None zurückgegeben ''' + + if not self.get_gui_data(key_neu): + if not self.get_gui_data(key_sivas): + return + key_list.append(key_sivas) + else: + key_list.append(key_neu) + return key_list def check_pflichtfelder(self): """Allgemeine Prüfungen: @@ -763,13 +777,36 @@ class CadItem(DataModel): return (True, {}) def check_improper_chars(self, invalid_chars): - """ überprüft ob inder Oberfläche nicht erlaubte Zeichen eingetragen wurden""" - wrongchars = dict() - for key in self.key2label: - if key == "model3d_neu": # 3D Teil Pfad ausnehmen - continue - if key == "material_sivas": # Wert in GUI-Spalte "SIVAS-Werte in Feld "Material" nicht berücksichtigen - continue + """ + Überprüft, ob in den Eingabefeldern der GUI unzulässige Zeichen eingetragen wurden. + Die unzulässigen Zeichen sind in cfg/InvalidCharacters.txt aufgelistet. + Ursprung dieser Liste ist \\ruledesigner\RDF_Daten\Konfigurator\CustomVaulting\ERP_Item.ini -> Option "InvalidCharacters" + """ + wrongchars = {} + keys_to_check = [] + + # Bei diesen Feldern soll geprüft werden, ob sie einen Inhalt aufweisen. Wenn nicht, muss auch nicht geprüft werden, ob sich darin unzulässige Zeichen befinden. + check_key_for_data = ["halbzeugnummer_neu", "halbzeuglaenge_neu", "zusatzinfos_auto_text", "zusatzinfos_bendef_text"] + keys_with_data = list(filter(lambda key: self.get_gui_data(key) != "", check_key_for_data)) + keys_to_check + keys_with_data + + # Mapping SIVAS-Felder und Überschriebene Felder. Hier soll jeweils geprüft werden, welches der beiden einen Wert enthält. + # Wenn beide Felder einen Wert enthalten soll nur das überschriebene Feld nach unzulässigen Zeichen durchsucht werden, ansonsten das SIVAS-Feld + compare_keys_for_data = { "bezeichnung1_sivas": "bezeichnung1_neu", + "tosgruppe_sivas": "tosgruppe_neu", + "hersteller_sivas": "hersteller_neu", + "ersatzfuer_sivas": "ersatzfuer_neu", + "ersetztdurch_sivas": "ersetztdurch_neu", + "herstteilenr_sivas": "herstteilenr_neu", + "material_sivas": "material_neu", + "aenderungsindex_sivas": "aenderungsindex_neu", + "aenderungstext_sivas": "aenderungstext_neu", + "freigabevermerk_sivas": "freigabevermerk_neu", + } + for sivas_key, neu_key in compare_keys_for_data.items(): + self.get_key_with_data(sivas_key, neu_key, keys_to_check) + + for key in keys_to_check: content = self.get_gui_data(key) for c in invalid_chars: if c in content: @@ -2527,6 +2564,7 @@ class GuiLogic(): pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu") version_sivas = str(self._model.get_gui_data("version_sivas")) freigabe_sivas = self._model.get_gui_data("freigabevermerk_sivas") + freigabe_neu = self._model.get_gui_data("freigabevermerk_neu") # Brauchen wir für den Fall, dass der SIVAS-Freigabevermerk beim Einlesen bereits transformiert wurden, da er ein Semikolon enthielt. if selected is None: # Default Vorbelegung @@ -2539,6 +2577,9 @@ class GuiLogic(): default = 'Anpassung an neues Indexsystem, Zeichnung mit Versionsnummer {version} weiterhin gültig'.format(version=version_sivas) else: default = '-' + else: + if freigabe_neu is not None: + default = freigabe_neu ret['freigabevermerk_neu'] = default else: ret['freigabevermerk_neu'] = selected