From 7c291bcbf84e43ea262c711589f3285d85acfa6d Mon Sep 17 00:00:00 2001 From: chrin Date: Tue, 26 Sep 2023 13:45:56 +0200 Subject: [PATCH] SaveFigureThread, does not attach files when there is no write permission --- base.py | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/base.py b/base.py index f322398..fe7da7a 100644 --- a/base.py +++ b/base.py @@ -26,7 +26,6 @@ from qtpy.QtWidgets import (QAction, QApplication, QDialog, QFrame, QLabel, QProgressBar, QScrollArea, QSizePolicy, QSplashScreen, QVBoxLayout, QWidget) - from pyqtacc.bdbase.utils import _line from pyqtacc.bdbase.enumkind import Facility, MsgSeverity, UserMode from pyqtacc.bdbase.helpbrowser import HelpBrowser @@ -35,11 +34,9 @@ from pyqtacc.bdbase.savehdf import QSaveHDF from pyqtacc.bdbase.hdf5filemenu import HDF5GroupBox from pyqtacc.bdbase.sendelog import QSendToELOG - from pyqtacc.bdbase.screenshot import QScreenshot from pyqtacc.bdbase.guiframe import GUIFrame - from caqtwidgets.pvwidgets import QNoDockWidget import PyCafe @@ -98,10 +95,12 @@ class BaseWindow(QMainWindow): def __del__(self): self.wait() + def run(self): attach_files = [] folder_name = self.folder_name + date_str = self.parent.add_date_to_path( time_in_seconds=self.time_in_seconds, @@ -110,6 +109,7 @@ class BaseWindow(QMainWindow): def extract_and_attach(i, nfig, name, all_fig_data): canvas = 'Canvas {0}'.format(i+1) name_base = name.replace(' ', '_').lower() + write_message_fired = False if all_fig_data[canvas] is not None: nfig_canvas = len(all_fig_data[canvas]) @@ -124,36 +124,49 @@ class BaseWindow(QMainWindow): idx) if idx > 0 else name_base save_dest = (folder_name + date_str + '_' + name + '.png') - + + if not os.path.exists(save_dest): if all_fig_data[canvas][idx] is not None: _dirname = os.path.dirname(save_dest) + print(_dirname, flush=True) if os.access(_dirname, os.W_OK): + print("We have write permission", flush=True) all_fig_data[canvas][idx].savefig(save_dest) elif not write_message_fired: + + print("No write permission", flush=True) _mess = ("Do not have write permission " + "for directory {0} from this " + "host {1}. Images not saved and " + "cannot be sent to elog").format( _dirname, os.uname()[1]) + print(_mess, flush=True) self.parent.trigger_log_message.emit( MsgSeverity.WARN.name, _pymodule, _line(), _mess, {}) write_message_fired = True - - attach_files.append(save_dest) + + + if not write_message_fired: + attach_files.append(save_dest) + + + - write_message_fired = False try: resultsSeq = self.settings.data["GUI"]["resultsSeq"] titleSeq = self.settings.data["GUI"]["subResultsTabTitle"] if self.all_data: fig_data = self.all_data['Figure data'] for i, (nfig, name) in enumerate(zip(resultsSeq, titleSeq)): + print(i, nfig, name, flush=True) + print(fig_data, flush=True) extract_and_attach(i, nfig, name, fig_data) except KeyError as ex: pass - + + try: resultsSeq = self.settings.data["GUI2"]["resultsSeq"] @@ -165,7 +178,7 @@ class BaseWindow(QMainWindow): except KeyError as ex: pass - + #Not so nice.. send a signal instead? if attach_files: @@ -503,9 +516,11 @@ class BaseWindow(QMainWindow): try: from src.analysis import AnalysisProcedure self.analysis_procedure = AnalysisProcedure(self) + print("Base class has user supplied AnalysisProcedure class.", + flush=True) except ImportError as e: print(("Base class without user supplied AnalysisProcedure class." - + " import Error:"), e) + + " import Error:"), e, flush=True) ##self.trigger_elog_entry.connect(self.receive_elog_notification) ##self.trigger_hdf_save.connect(self.save_to_hdf)