diff --git a/lib/caditem.py b/lib/caditem.py index f92fd11..a0c55cf 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -553,8 +553,8 @@ class CadItem(DataModel): def set_gui_defaults(self): self._logic.set_gui_defaults() - def message_info(self, title, key, questions='ok'): - return self._controller.message_info(title, key, questions) + def message_info(self, title, key, values={}): + return self._controller.message_info(title, key, values) def message_error(self, title, key, values={}): return self._controller.message_error(title, key, values) def message_question(self, title, key, values={}): @@ -864,6 +864,9 @@ class CadItem(DataModel): current_id = self.get_current_item_id() target_path = os.path.join(self._controller.get_env('out'), str(current_id) + '.xlsx') + + infos = dict() + infos['path'] = target_path # cms = [ "Author", "Teilenummer", "StartRevision", # "Bezeichnung1", "Bezeichnung2", "Bezeichnung4", "KategorieNE", # "BeschaffungsartNE", "TOS-Gruppe_ERP", "Dispogruppe", @@ -879,6 +882,9 @@ class CadItem(DataModel): df = pd.DataFrame.from_dict(data, orient='index') df = (df.T) df.to_excel(target_path, index=True) + if not os.path.exists(target_path): + raise FileExistsError("Pfad wurde nicht erzeugt", target_path) + return infos def tos_to_dict(self, tosgruppe, num2refId, num2child): diff --git a/lib/controller.py b/lib/controller.py index 706e098..c07c8b9 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -36,6 +36,10 @@ messages = { "aenderungstext_too_long":'Änderungstext_weist zu viele Zeichen auf. Bitte auf 400 Zeichen verkürzen!', "missing_data":'Fehlende Angaben in der Oberfläche: {Labels}', "sivas_db_error":'Diese Assembly existiert nicht. Eventuell ist es nur ein Teil?', + "export_sucessful":'Export der Migrationsdatei erfolgreich. Siehe {path}', + "export_not_sucessful":'Export der Migrationsdatei fehlgeschlagen. Überprüfe Schreibrechte für {path}.', + "export_not_sucessful_file_open":'Export fehlgeschlagen. Datei offen?', + } @@ -227,8 +231,11 @@ class Controller(Observer): def get_configuration(self): return self._model.get_configuration() - def message_info(self, title, key, questions='ok'): - return messagebox.showinfo(title, messages[key]) + def message_info(self, title, key, values): + text = messages[key] + if 'path' in values: + text = text.format(path=values['path']) + return messagebox.showinfo(title, text) def message_question(self, title, key, values={}): text = messages[key] if 'teilenummer' in values: @@ -283,11 +290,11 @@ class Controller(Observer): self.refresh_gui() def migrieren(self): + self._view.reset_labels() (ok, missing) = self._model.check_pflichtfelder() if ok == False: labels = ', '.join(missing) self.message_error('Fehlende Angaben', 'missing_data', {'Labels':labels}) - self._view.reset_labels() self._view.highlight_labels(missing) return invalid_chars = self._config.InvalidChars.get() @@ -299,8 +306,16 @@ class Controller(Observer): return ok = self._model.check_content() if ok == True: - data = self._model.create_migration_data() - self._model.create_migration_file(data) + data = self._model.create_migration_data() + try: + infos = self._model.create_migration_file(data) + except PermissionError: + self.message_error('export of excel', 'export_not_sucessful_file_open') + except FileExistsError: + self.message_error('export of excel', 'export_not_sucessful') + else: + self.message_info('export of excel', 'export_sucessful', {'path': infos['path']}) + def zuruecksetzen(self): cid = self.get_current_item_id()