Skip to content

Commit

Permalink
generate button invalid files crash, required fields added fot btn de…
Browse files Browse the repository at this point in the history
…/activation, related tests updated
  • Loading branch information
mpatrou committed May 18, 2023
1 parent d4268dc commit 9f2d1c0
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 15 deletions.
9 changes: 8 additions & 1 deletion src/shiver/models/convert_dgs_to_single_mde.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,14 @@ def PyExec(self): # pylint: disable=too-many-branches
run_obj = data.getRun()
# check if monitor is necessary and get Ei,T0
if inst_name in ["HYSPEC", "CNCS"]:
Ei = Ei_supplied if Ei_supplied else run_obj["EnergyRequest"].getStatistics().mean
Ei = None
if Ei_supplied:
Ei = Ei_supplied
elif "EnergyRequest" in run_obj:
Ei = run_obj["EnergyRequest"].getStatistics().mean
else:
self.log().error("EnergyRequest is not defined")
raise ValueError("EnergyRequest is not defined")
T0 = T0_supplied if (T0_supplied is not None) else GetEi(data).Tzero
else:
if (Ei_supplied is not None) and (T0_supplied is not None):
Expand Down
11 changes: 7 additions & 4 deletions src/shiver/models/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def generate_mde(self, config_dict: dict):

# disable the Generate button to prevent multiple clicks
if self.generate_mde_finish_callback:
self.generate_mde_finish_callback()
self.generate_mde_finish_callback(False)

# remove output workspace if it exists in memory
output_workspace = config_dict.get("mde_name", "")
Expand Down Expand Up @@ -190,8 +190,11 @@ def finish_generate_mde(self, obs, error=False, msg=""):
self.workspace_name = None
self.output_dir = None
self.config_dict = None
# enable button
if self.generate_mde_finish_callback:
self.generate_mde_finish_callback()
self.generate_mde_finish_callback(True)
if self.error_callback:
self.error_callback(msg=err_msg)
else:
logger.information("GenerateDGSMDE finished")
# attach config_dict to the workspace
Expand Down Expand Up @@ -262,8 +265,8 @@ def finish_save_md(self, obs, error=False, msg=""):
self.output_dir = None

self.algorithm_observer.remove(obs)

self.generate_mde_finish_callback()
# enable button
self.generate_mde_finish_callback(True)


class GenerateMDEObserver(AlgorithmObserver):
Expand Down
8 changes: 4 additions & 4 deletions src/shiver/views/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ def __init__(self, parent=None):
self.field_errors = {self.buttons.save_btn: [], self.buttons.generate_btn: []}
# mandatory fields for the two available buttons
self.field_btns = {
self.mde_type_widget.output_dir: [self.buttons.save_btn],
self.mde_type_widget.mde_name: [self.buttons.save_btn],
self.mde_type_widget.output_dir: [self.buttons.save_btn, self.buttons.generate_btn],
self.mde_type_widget.mde_name: [self.buttons.save_btn, self.buttons.generate_btn],
self.raw_data_widget.files: [self.buttons.save_btn, self.buttons.generate_btn],
self.reduction_parameters.ei_input: [self.buttons.save_btn],
self.reduction_parameters.t0_input: [self.buttons.save_btn],
Expand All @@ -104,9 +104,9 @@ def __init__(self, parent=None):
self.mde_type_widget.check_mde_name()
self.raw_data_widget.check_file_input()

def generate_mde_finish_callback(self):
def generate_mde_finish_callback(self, activate):
"""Toggle the generate button disabled state."""
if self.isEnabled():
if not activate:
self.setDisabled(True)
else:
self.setEnabled(True)
Expand Down
12 changes: 6 additions & 6 deletions tests/views/test_generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def error_callback(msg):

# all three required fields are empty
assert len(generate.field_errors[generate.buttons.save_btn]) == 3
assert len(generate.field_errors[generate.buttons.generate_btn]) == 1
assert len(generate.field_errors[generate.buttons.generate_btn]) == 3

# set files
directory = os.path.realpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../data/raw"))
Expand Down Expand Up @@ -93,7 +93,7 @@ def error_callback(msg):
assert not mde_type_widget.as_dict()
assert errors_list[-1] == "Invalid MDE name found in history."
assert len(generate.field_errors[generate.buttons.save_btn]) == 1
assert len(generate.field_errors[generate.buttons.generate_btn]) == 0
assert len(generate.field_errors[generate.buttons.generate_btn]) == 1

# check error_2: empty output dir
mde_type_widget.re_init_widget()
Expand Down Expand Up @@ -148,15 +148,15 @@ def test_generate_widget_colors_invalid(qtbot):

# all three required fields are empty
assert len(generate.field_errors[generate.buttons.save_btn]) == 3
assert len(generate.field_errors[generate.buttons.generate_btn]) == 1
assert len(generate.field_errors[generate.buttons.generate_btn]) == 3
# check mde_name border
qtbot.keyClicks(mde_type_widget.mde_name, "")

css_style_mde_name = mde_type_widget.mde_name.styleSheet()
color = color_search.search(css_style_mde_name).group(1)
assert color == "red"
assert len(generate.field_errors[generate.buttons.save_btn]) == 3
assert len(generate.field_errors[generate.buttons.generate_btn]) == 1
assert len(generate.field_errors[generate.buttons.generate_btn]) == 3

qtbot.keyClicks(mde_type_widget.output_dir, "/tmp/test?")
# check output_dir border
Expand All @@ -170,7 +170,7 @@ def test_generate_widget_colors_invalid(qtbot):
color = color_search.search(css_style_files).group(1)
assert color == "red"
assert len(generate.field_errors[generate.buttons.save_btn]) == 3
assert len(generate.field_errors[generate.buttons.generate_btn]) == 1
assert len(generate.field_errors[generate.buttons.generate_btn]) == 3

# assert buttons are deactivated
assert generate.buttons.save_btn.isEnabled() is False
Expand All @@ -186,7 +186,7 @@ def test_generate_widget_colors_valid(qtbot):
generate.show()

assert len(generate.field_errors[generate.buttons.save_btn]) == 3
assert len(generate.field_errors[generate.buttons.generate_btn]) == 1
assert len(generate.field_errors[generate.buttons.generate_btn]) == 3

# set mde_name
qtbot.keyClicks(mde_type_widget.mde_name, "mde_test_2")
Expand Down

0 comments on commit 9f2d1c0

Please sign in to comment.