diff --git a/Framework/PythonInterface/mantid/plots/datafunctions.py b/Framework/PythonInterface/mantid/plots/datafunctions.py index 494e7fbcd406c564941ecabac446c4795eae2da6..74ddac5e5a00d5f113bc8d414422a8704469fb0c 100644 --- a/Framework/PythonInterface/mantid/plots/datafunctions.py +++ b/Framework/PythonInterface/mantid/plots/datafunctions.py @@ -608,7 +608,11 @@ def get_sample_log(workspace, **kwargs): if not run.hasProperty(LogName): raise ValueError('The workspace does not contain the {} sample log'.format(LogName)) tsp = run[LogName] - units = tsp.units + try: + units = tsp.units + except UnicodeDecodeError as exc: + mantid.kernel.logger.warning("Error retrieving units for log {}: {}".format(LogName, str(exc))) + units = "unknown" if not isinstance(tsp, (mantid.kernel.FloatTimeSeriesProperty, mantid.kernel.Int32TimeSeriesProperty, mantid.kernel.Int64TimeSeriesProperty)): diff --git a/qt/applications/workbench/workbench/plugins/workspacewidget.py b/qt/applications/workbench/workbench/plugins/workspacewidget.py index 67a398ad1a5acfff35d6d06bd13a4c73f1d23d23..4af40c31a6002720ab813e5021c68c3972e0cc97 100644 --- a/qt/applications/workbench/workbench/plugins/workspacewidget.py +++ b/qt/applications/workbench/workbench/plugins/workspacewidget.py @@ -138,8 +138,8 @@ class WorkspaceWidget(PluginWidget): except Exception as exception: logger.warning("Could not open sample logs for workspace '{}'." "".format(ws.name())) - logger.debug("{}: {}".format(type(exception).__name__, - exception)) + logger.warning("{}: {}".format(type(exception).__name__, + exception)) def _do_slice_viewer(self, names): """ diff --git a/qt/python/mantidqt/widgets/samplelogs/model.py b/qt/python/mantidqt/widgets/samplelogs/model.py index d08316773dcb30ea6383a116d5510f20125258b8..d69c98a12e92e661e9f1f9c0f67adcdf4e2fb7af 100644 --- a/qt/python/mantidqt/widgets/samplelogs/model.py +++ b/qt/python/mantidqt/widgets/samplelogs/model.py @@ -10,7 +10,7 @@ from __future__ import (absolute_import, division, print_function) from mantid.kernel import (BoolTimeSeriesProperty, FloatTimeSeriesProperty, Int32TimeSeriesProperty, - Int64TimeSeriesProperty, StringTimeSeriesProperty) + Int64TimeSeriesProperty, StringTimeSeriesProperty, logger) from mantid.api import MultipleExperimentInfos from qtpy.QtGui import QStandardItemModel, QStandardItem @@ -55,6 +55,7 @@ class SampleLogsModel(object): """This class stores the workspace object and return log values when requested """ + def __init__(self, ws): """Stores three thing:, the workspace, which experiment info number to use, and the run object. @@ -126,23 +127,27 @@ class SampleLogsModel(object): """Return a QModel made from the current workspace. This should be set onto a QTableView """ + + def create_table_item(column, itemname, callable, *args): + item = QStandardItem() + item.setEditable(False) + try: + item.setText(callable(*args)) + except Exception as exc: + logger.warning("Error setting column {} for log {}: {}".format(column, itemname, str(exc))) + + return item + model = QStandardItemModel() model.setHorizontalHeaderLabels(["Name", "Type", "Value", "Units"]) model.setColumnCount(4) for key in self.get_log_names(): log = self.run.getLogData(key) - name = QStandardItem() - name.setText(log.name) - name.setEditable(False) - log_type = QStandardItem() - log_type.setText(get_type(log)) - log_type.setEditable(False) - value = QStandardItem() - value.setText(str(get_value(log))) - value.setEditable(False) - unit = QStandardItem() - unit.setText(log.units) - unit.setEditable(False) + name = create_table_item("Name", key, lambda: log.name) + log_type = create_table_item("Type", key, get_type, log) + value = create_table_item("Value", key, lambda log: str(get_value(log)), log) + unit = create_table_item("Units", key, lambda: log.units) model.appendRow((name, log_type, value, unit)) + model.sort(0) return model