diff --git a/lib/CreoMigrateGui.py b/lib/CreoMigrateGui.py index 7f98d63..323a618 100644 --- a/lib/CreoMigrateGui.py +++ b/lib/CreoMigrateGui.py @@ -9,7 +9,6 @@ import argparse import os - class Environment: def __init__(self): diff --git a/lib/caditem.py b/lib/caditem.py index 2a98d53..5f3059d 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -274,10 +274,10 @@ class CadItem(DataModel): def set_red_ids(self, red_ids): """ these ids are not yet known by the PDM""" self._red_ids = red_ids - def get_red_ids(self): return self._red_ids + # Methoden um die Verwendbarkeit einzelner Schalter auszugrauen def set_read_only_dict(self, data:dict): for k,v in data: @@ -293,21 +293,21 @@ class CadItem(DataModel): return self._read_only_items # Daten zum Impfen merken - def set_data_dict(self, data:dict): - for k,v in data: - self.set_data(k,v) - def set_data(self, key, val): - if key not in self.data_keys: - raise Exception("this data can not be set "+ key) - else: - self._data[key] = val + # def set_data_dict(self, data:dict): + # for k,v in data: + # self.set_data(k,v) + # def set_data(self, key, val): + # if key not in self.data_keys: + # raise Exception("this data can not be set "+ key) + # else: + # self._data[key] = val - def get_data(self, key): - """ gibt ein Datenstück zurück """ - return self._data[key] - def get_all_data(self): - """ gibt alle enthaltenen Daten zurück """ - return self._data + # def get_data(self, key): + # """ gibt ein Datenstück zurück """ + # return self._data[key] + # def get_all_data(self): + # """ gibt alle enthaltenen Daten zurück """ + # return self._data # Daten die in der GUI gespeichert werden sollen def set_gui_dict(self, data:dict): @@ -846,13 +846,34 @@ class CadItem(DataModel): # New_path = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\02_Bedarfspool\ # ELSE: # New_path = \\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool - zielpfad = self._config.Pfade.get('Zielpfade', datenbank ) - username = os.environ.get("USERNAME") - userpfad = os.path.join(zielpfad, username) - # Wenn User, der migriert, noch keinen Ordner im Ziel besitzt, - # soll dieser automatisch beim Klick auf "Migrieren" angelegt werden. - if not os.path.exists(userpfad): - os.mkdir(userpfad) + zielpfad = self._controller.get_config().Pfade.get('Zielpfade', datenbank ) + if os.path.exists(zielpfad): + # nur den Usernamen dazu bauen, wenn auch der konfigurierte Pfad existiert. + username = os.environ.get("USERNAME") + userpfad = os.path.join(zielpfad, username) + # Wenn User, der migriert, noch keinen Ordner im Ziel besitzt, + # soll dieser automatisch beim Klick auf "Migrieren" angelegt werden. + if not os.path.exists(userpfad): + os.mkdir(userpfad) + + current_id = self.get_current_item_id() + target_path = os.path.join(self._controller.get_env('out'), str(current_id) + '.xlsx') + # cms = [ "Author", "Teilenummer", "StartRevision", + # "Bezeichnung1", "Bezeichnung2", "Bezeichnung4", "KategorieNE", + # "BeschaffungsartNE", "TOS-Gruppe_ERP", "Dispogruppe", + # "Dispolaufgruppe", "WerkstofftypNE", "WerkstoffNE", + # "Oberflaechenbehandlung", "Farbe", "KalkulationsartNE", + # "RuestcodeAusw", "Fertigungsart", "Allgemeintoleranz", + # "HalbzeugInternAngabe", "Halbzeug", "HalbzeugOhneSaegeliste", + # "EinheitNE", "FOS-GruppeNE", "Hersteller", "HerstellerTeilenummer", + # "Serien-Status", "Kantennorm", "Oberflaechennorm", "Massnorm", + # "Tolerierungsnorm","Änderungsbeschreibung", + # "Freigabevermerk", "ZusaetzlicheInformationen"] + + df = pd.DataFrame.from_dict(data, orient='index') + df = (df.T) + df.to_excel(target_path, index=True) + def tos_to_dict(self, tosgruppe, num2refId, num2child): tosstr = str(tosgruppe) @@ -1032,6 +1053,7 @@ class CadItem(DataModel): zusatzinfos_auto_text = self.get_gui_data("zusatzinfos_auto_text") zusatzinfos_bendef_text = self.get_gui_data("zusatzinfos_bendef_text") data["ZusaetzlicheInformationen"] = zusatzinfos_auto_text + zusatzinfos_bendef_text + return data diff --git a/lib/controller.py b/lib/controller.py index 5421136..c2085a6 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -90,6 +90,14 @@ class Controller(Observer): def get_config(self): return self._config + def get_orange_ids(self, red_ids): + """just check which files have already been worked with, so data has been added""" + orange = dict() + work = self.get_env('out') + for red in red_ids: + if os.path.exists(os.path.join(work, red +'.json')): + orange[red] = True + return orange def get_csv_files_of_asm(self, asmid, uselocal): """ sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen """ @@ -156,6 +164,7 @@ class Controller(Observer): """lädt alle nötigen Daten für diese ID """ # falls eine .json Datei davon im Work Ordner existiert, dann diese zuerst versuchen ins Modell zu laden self._view.clear_rightframes() + self._model.clear() isok = self._model.from_json_file(self.get_env("out"), cid) if isok == False: # ansonsten die .csv Datei mit den SIVAS Infos aus data holen @@ -164,7 +173,6 @@ class Controller(Observer): print("no file found "+ cid) else: # und diese in der Gui setzen - self._model.clear() set_data = self._model.csv2guidata(loaded) self.set_gui_dict(set_data) self._model.set_gui_defaults() @@ -180,19 +188,19 @@ class Controller(Observer): def get_parent_children(self): return self._model.get_parent_children() - # merkt sich die reinen Daten zum Impfen - def set_data_dict(self, data:dict): - """merken der Daten zum Impfen""" - for k,v in data: - self.set_data(k,v) - def set_data(self, key, value): - """merken der Daten zum Impfen""" - self._model.set_data(key, value) + # # merkt sich die reinen Daten zum Impfen + # def set_data_dict(self, data:dict): + # """merken der Daten zum Impfen""" + # for k,v in data: + # self.set_data(k,v) + # def set_data(self, key, value): + # """merken der Daten zum Impfen""" + # self._model.set_data(key, value) - def get_data(self, key): - return self._model.get_data(key) - def get_all_data(self): - return self._model.get_all_data() + # def get_data(self, key): + # return self._model.get_data(key) + # def get_all_data(self): + # return self._model.get_all_data() # merkt sich die Nutzereingaben, bzw. Daten für die GUI def set_gui_dict(self, data:dict): @@ -284,7 +292,7 @@ class Controller(Observer): ok = self._model.check_content() if ok == True: data = self._model.create_migration_data() - #self._model.create_migration_file(data) + self._model.create_migration_file(data) def zuruecksetzen(self): cid = self.get_current_item_id() diff --git a/lib/gui.py b/lib/gui.py index 1095270..9b7a532 100644 --- a/lib/gui.py +++ b/lib/gui.py @@ -73,9 +73,9 @@ class TreeView(): def set_controller(self, controller): self._controller = controller - def refresh(self, parent_children_mapping, red_ids): + def refresh(self, parent_children_mapping, red_ids, orange_ids): self.clear() - self.create(parent_children_mapping, red_ids) + self.create(parent_children_mapping, red_ids, orange_ids) def clear(self): for c in self.tree.get_children(): @@ -88,13 +88,14 @@ class TreeView(): return True return False - def create(self, parent_children_mapping, red_ids): + def create(self, parent_children_mapping, red_ids, orange_ids): pool = dict() for parent, children in parent_children_mapping.items(): # parent erzeugen, falls es diese nicht schon gibt (check der pool ids) if parent not in pool: - if parent not in red_ids: rowtags = ('good') - else: rowtags = ('missing') + if parent not in red_ids: rowtags = ('good') + elif parent in orange_ids: rowtags = ('orange') + else: rowtags = ('missing') parent_id = self.tree.insert('', tk.END, text=parent, tags=rowtags, open=True) self.trid2sivasId[parent_id] = parent # merken für Doppelklick @@ -103,8 +104,9 @@ class TreeView(): parent_id = pool[parent] for child in children: - if child not in red_ids: rowtags = ('good') - else: rowtags = ('missing') + if child not in red_ids: rowtags = ('good') + elif child in orange_ids: rowtags = ('orange') + else: rowtags = ('missing') if self._has_childs(child, parent_children_mapping) == True: # wenn das Objekt ein Kind hat, könnte es bereits erzeugt worden sein @@ -131,7 +133,8 @@ class TreeView(): def data_from_model(self): parent_children_mapping = self._controller.get_parent_children() red_ids = self._controller.get_red_ids() - self.refresh(parent_children_mapping, red_ids) + orange_ids = self._controller.get_orange_ids(red_ids) + self.refresh(parent_children_mapping, red_ids, orange_ids) def item_selected(self, event): """callback of TK if an item in the tree has been selected