SaveFigureThread, does not attach files when there is no write permission
This commit is contained in:
35
base.py
35
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)
|
||||
|
||||
Reference in New Issue
Block a user