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