SaveFigureThread, does not attach files when there is no write permission

This commit is contained in:
2023-09-26 13:45:56 +02:00
parent 1f4fe75c73
commit 7c291bcbf8

35
base.py
View File

@@ -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)