Skip to content
Snippets Groups Projects
Commit 7150ca23 authored by Conor Finn's avatar Conor Finn
Browse files

RE #27187 Use save location in GUI functionality

parent db24ee83
No related branches found
No related tags found
No related merge requests found
...@@ -8,12 +8,10 @@ ...@@ -8,12 +8,10 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
from Engineering.gui.engineering_diffraction.settings.settings_helper import get_setting, set_setting from Engineering.gui.engineering_diffraction.settings.settings_helper import get_setting, set_setting
from Engineering.gui.engineering_diffraction.tabs.common import path_handling
class SettingsModel(object): class SettingsModel(object):
INTERFACES_SETTINGS_GROUP = "CustomInterfaces"
ENGINEERING_PREFIX = "EngineeringDiffraction2/"
def get_settings_dict(self, keys): def get_settings_dict(self, keys):
settings = {} settings = {}
for setting_name in keys: for setting_name in keys:
...@@ -24,8 +22,10 @@ class SettingsModel(object): ...@@ -24,8 +22,10 @@ class SettingsModel(object):
for key in settings: for key in settings:
self.set_setting(key, settings[key]) self.set_setting(key, settings[key])
def get_setting(self, name): @staticmethod
return get_setting(self.INTERFACES_SETTINGS_GROUP, self.ENGINEERING_PREFIX, name) def get_setting(name):
return get_setting(path_handling.INTERFACES_SETTINGS_GROUP, path_handling.ENGINEERING_PREFIX, name)
def set_setting(self, name, value): @staticmethod
set_setting(self.INTERFACES_SETTINGS_GROUP, self.ENGINEERING_PREFIX, name, value) def set_setting(name, value):
\ No newline at end of file set_setting(path_handling.INTERFACES_SETTINGS_GROUP, path_handling.ENGINEERING_PREFIX, name, value)
...@@ -70,8 +70,11 @@ class SettingsPresenter(object): ...@@ -70,8 +70,11 @@ class SettingsPresenter(object):
@staticmethod @staticmethod
def _validate_settings(settings): def _validate_settings(settings):
all_keys = settings.keys() == SETTINGS_LIST try:
save_location = str(settings["save_location"]) all_keys = settings.keys() == SETTINGS_LIST
save_valid = save_location is not "" and save_location is not None save_location = str(settings["save_location"])
recalc_valid = settings["recalc_vanadium"] is not None save_valid = save_location is not "" and save_location is not None
return all_keys and save_valid and recalc_valid recalc_valid = settings["recalc_vanadium"] is not None
return all_keys and save_valid and recalc_valid
except KeyError: # Settings contained invalid key.
return False
...@@ -24,8 +24,6 @@ CURVES_WORKSPACE_NAME = "engggui_vanadium_curves" ...@@ -24,8 +24,6 @@ CURVES_WORKSPACE_NAME = "engggui_vanadium_curves"
INTEGRATED_WORKSPACE_NAME = "engggui_vanadium_integration" INTEGRATED_WORKSPACE_NAME = "engggui_vanadium_integration"
CALIB_PARAMS_WORKSPACE_NAME = "engggui_calibration_banks_parameters" CALIB_PARAMS_WORKSPACE_NAME = "engggui_calibration_banks_parameters"
CALIBRATION_DIR = path.join(path_handling.OUT_FILES_ROOT_DIR, "Calibration", "")
NORTH_BANK_TEMPLATE_FILE = "template_ENGINX_241391_236516_North_bank.prm" NORTH_BANK_TEMPLATE_FILE = "template_ENGINX_241391_236516_North_bank.prm"
SOUTH_BANK_TEMPLATE_FILE = "template_ENGINX_241391_236516_South_bank.prm" SOUTH_BANK_TEMPLATE_FILE = "template_ENGINX_241391_236516_South_bank.prm"
...@@ -64,10 +62,10 @@ class CalibrationModel(object): ...@@ -64,10 +62,10 @@ class CalibrationModel(object):
params_table.append([i, difc[i], 0.0, tzero[i]]) params_table.append([i, difc[i], 0.0, tzero[i]])
self.update_calibration_params_table(params_table) self.update_calibration_params_table(params_table)
self.create_output_files(CALIBRATION_DIR, difc, tzero, sample_path, vanadium_path, calib_dir = path.join(path_handling.get_output_path(), "Calibration", "")
instrument) self.create_output_files(calib_dir, difc, tzero, sample_path, vanadium_path, instrument)
if rb_num: if rb_num:
user_calib_dir = path.join(path_handling.OUT_FILES_ROOT_DIR, "User", rb_num, user_calib_dir = path.join(path_handling.get_output_path(), "User", rb_num,
"Calibration", "") "Calibration", "")
self.create_output_files(user_calib_dir, difc, tzero, sample_path, vanadium_path, self.create_output_files(user_calib_dir, difc, tzero, sample_path, vanadium_path,
instrument) instrument)
......
...@@ -8,9 +8,16 @@ ...@@ -8,9 +8,16 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
from os import path from os import path
from Engineering.gui.engineering_diffraction.settings.settings_helper import get_setting
OUT_FILES_ROOT_DIR = path.join(path.expanduser("~"), "Engineering_Mantid") INTERFACES_SETTINGS_GROUP = "CustomInterfaces"
ENGINEERING_PREFIX = "EngineeringDiffraction2/"
def get_run_number_from_path(run_path, instrument): def get_run_number_from_path(run_path, instrument):
return path.splitext(path.basename(run_path))[0].replace(instrument, '').lstrip('0') return path.splitext(path.basename(run_path))[0].replace(instrument, '').lstrip('0')
def get_output_path():
location = get_setting(INTERFACES_SETTINGS_GROUP, ENGINEERING_PREFIX, "save_location")
return location if location is not None else ""
...@@ -59,17 +59,19 @@ class VanadiumCorrectionsTest(unittest.TestCase): ...@@ -59,17 +59,19 @@ class VanadiumCorrectionsTest(unittest.TestCase):
self.assertEqual(0, van_correction.call_count) self.assertEqual(0, van_correction.call_count)
self.assertEqual(0, save.call_count) self.assertEqual(0, save.call_count)
@patch(dir_path + ".vanadium_corrections.path_handling.get_output_path")
@patch(dir_path + ".vanadium_corrections.makedirs") @patch(dir_path + ".vanadium_corrections.makedirs")
def test_file_path_generation(self, makedirs): def test_file_path_generation(self, makedirs, out_path):
out_path.return_value = path.join(path.expanduser("~"), "Test_Directory")
vanadium_run_number = "1234" vanadium_run_number = "1234"
engineering_path = path.join(path.expanduser("~"), "Engineering_Mantid") engineering_path = path.join(path.expanduser("~"), "Test_Directory")
if path.exists(engineering_path): if path.exists(engineering_path):
rmtree(engineering_path) rmtree(engineering_path)
output = vanadium_corrections._generate_saved_workspace_file_paths(vanadium_run_number) output = vanadium_corrections._generate_saved_workspace_file_paths(vanadium_run_number)
self.assertEqual(output, self.assertEqual(output,
(path.join(path.expanduser("~"), "Engineering_Mantid", "Vanadium_Runs", (path.join(path.expanduser("~"), "Test_Directory", "Vanadium_Runs",
"1234_precalculated_vanadium_run_integration.nxs"), "1234_precalculated_vanadium_run_integration.nxs"),
path.join(path.expanduser("~"), "Engineering_Mantid", "Vanadium_Runs", path.join(path.expanduser("~"), "Test_Directory", "Vanadium_Runs",
"1234_precalculated_vanadium_run_bank_curves.nxs"))) "1234_precalculated_vanadium_run_bank_curves.nxs")))
self.assertEqual(1, makedirs.call_count) self.assertEqual(1, makedirs.call_count)
......
...@@ -113,10 +113,10 @@ def _generate_saved_workspace_file_paths(vanadium_number, rb_num=""): ...@@ -113,10 +113,10 @@ def _generate_saved_workspace_file_paths(vanadium_number, rb_num=""):
integrated_filename = vanadium_number + SAVED_FILE_INTEG_SUFFIX integrated_filename = vanadium_number + SAVED_FILE_INTEG_SUFFIX
curves_filename = vanadium_number + SAVED_FILE_CURVE_SUFFIX curves_filename = vanadium_number + SAVED_FILE_CURVE_SUFFIX
if rb_num: if rb_num:
vanadium_dir = path.join(path_handling.OUT_FILES_ROOT_DIR, "User", rb_num, vanadium_dir = path.join(path_handling.get_output_path(), "User", rb_num,
VANADIUM_DIRECTORY_NAME) VANADIUM_DIRECTORY_NAME)
else: else:
vanadium_dir = path.join(path_handling.OUT_FILES_ROOT_DIR, VANADIUM_DIRECTORY_NAME) vanadium_dir = path.join(path_handling.get_output_path(), VANADIUM_DIRECTORY_NAME)
if not path.exists(vanadium_dir): if not path.exists(vanadium_dir):
makedirs(vanadium_dir) makedirs(vanadium_dir)
return path.join(vanadium_dir, integrated_filename), path.join(vanadium_dir, curves_filename) return path.join(vanadium_dir, integrated_filename), path.join(vanadium_dir, curves_filename)
...@@ -104,36 +104,36 @@ class FocusModel(object): ...@@ -104,36 +104,36 @@ class FocusModel(object):
def _save_focused_output_files_as_gss(self, instrument, sample_path, bank, sample_workspace, def _save_focused_output_files_as_gss(self, instrument, sample_path, bank, sample_workspace,
rb_num): rb_num):
gss_output_path = path.join( gss_output_path = path.join(
path_handling.OUT_FILES_ROOT_DIR, "Focus", path_handling.get_output_path(), "Focus",
self._generate_output_file_name(instrument, sample_path, bank, ".gss")) self._generate_output_file_name(instrument, sample_path, bank, ".gss"))
SaveGSS(InputWorkspace=sample_workspace, Filename=gss_output_path) SaveGSS(InputWorkspace=sample_workspace, Filename=gss_output_path)
if rb_num is not None: if rb_num is not None:
gss_output_path = path.join( gss_output_path = path.join(
path_handling.OUT_FILES_ROOT_DIR, "User", rb_num, "Focus", path_handling.get_output_path(), "User", rb_num, "Focus",
self._generate_output_file_name(instrument, sample_path, bank, ".gss")) self._generate_output_file_name(instrument, sample_path, bank, ".gss"))
SaveGSS(InputWorkspace=sample_workspace, Filename=gss_output_path) SaveGSS(InputWorkspace=sample_workspace, Filename=gss_output_path)
def _save_focused_output_files_as_nexus(self, instrument, sample_path, bank, sample_workspace, def _save_focused_output_files_as_nexus(self, instrument, sample_path, bank, sample_workspace,
rb_num): rb_num):
nexus_output_path = path.join( nexus_output_path = path.join(
path_handling.OUT_FILES_ROOT_DIR, "Focus", path_handling.get_output_path(), "Focus",
self._generate_output_file_name(instrument, sample_path, bank, ".nxs")) self._generate_output_file_name(instrument, sample_path, bank, ".nxs"))
SaveNexus(InputWorkspace=sample_workspace, Filename=nexus_output_path) SaveNexus(InputWorkspace=sample_workspace, Filename=nexus_output_path)
if rb_num is not None: if rb_num is not None:
nexus_output_path = path.join( nexus_output_path = path.join(
path_handling.OUT_FILES_ROOT_DIR, "User", rb_num, "Focus", path_handling.get_output_path(), "User", rb_num, "Focus",
self._generate_output_file_name(instrument, sample_path, bank, ".nxs")) self._generate_output_file_name(instrument, sample_path, bank, ".nxs"))
SaveNexus(InputWorkspace=sample_workspace, Filename=nexus_output_path) SaveNexus(InputWorkspace=sample_workspace, Filename=nexus_output_path)
def _save_focused_output_files_as_xye(self, instrument, sample_path, bank, sample_workspace, def _save_focused_output_files_as_xye(self, instrument, sample_path, bank, sample_workspace,
rb_num): rb_num):
xye_output_path = path.join( xye_output_path = path.join(
path_handling.OUT_FILES_ROOT_DIR, "Focus", path_handling.get_output_path(), "Focus",
self._generate_output_file_name(instrument, sample_path, bank, ".dat")) self._generate_output_file_name(instrument, sample_path, bank, ".dat"))
SaveFocusedXYE(InputWorkspace=sample_workspace, Filename=xye_output_path, SplitFiles=False) SaveFocusedXYE(InputWorkspace=sample_workspace, Filename=xye_output_path, SplitFiles=False)
if rb_num is not None: if rb_num is not None:
xye_output_path = path.join( xye_output_path = path.join(
path_handling.OUT_FILES_ROOT_DIR, "User", rb_num, "Focus", path_handling.get_output_path(), "User", rb_num, "Focus",
self._generate_output_file_name(instrument, sample_path, bank, ".dat")) self._generate_output_file_name(instrument, sample_path, bank, ".dat"))
SaveFocusedXYE(InputWorkspace=sample_workspace, SaveFocusedXYE(InputWorkspace=sample_workspace,
Filename=xye_output_path, Filename=xye_output_path,
......
...@@ -83,7 +83,7 @@ class FocusModelTest(unittest.TestCase): ...@@ -83,7 +83,7 @@ class FocusModelTest(unittest.TestCase):
@patch(file_path + ".SaveNexus") @patch(file_path + ".SaveNexus")
def test_save_output_files_with_no_RB_number(self, nexus, gss, xye): def test_save_output_files_with_no_RB_number(self, nexus, gss, xye):
mocked_workspace = "mocked-workspace" mocked_workspace = "mocked-workspace"
output_file = path.join(path_handling.OUT_FILES_ROOT_DIR, "Focus", output_file = path.join(path_handling.get_output_path(), "Focus",
"ENGINX_123_bank_North.nxs") "ENGINX_123_bank_North.nxs")
self.model._save_output("ENGINX", "Path/To/ENGINX000123.whatever", "North", self.model._save_output("ENGINX", "Path/To/ENGINX000123.whatever", "North",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment