From fec92cad1dded378bb520b1fb6abf9b24f618c1e Mon Sep 17 00:00:00 2001 From: Michael Walsh Date: Wed, 23 Oct 2024 15:39:34 -0400 Subject: [PATCH] removed comment, updated completion text to use old informative blob --- src/snapred/ui/presenter/WorkflowPresenter.py | 6 ++-- src/snapred/ui/widget/Workflow.py | 4 +-- src/snapred/ui/workflow/ReductionWorkflow.py | 31 ++++++++++++++----- src/snapred/ui/workflow/WorkflowBuilder.py | 6 ++-- .../ui/workflow/WorkflowImplementer.py | 4 +++ 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/snapred/ui/presenter/WorkflowPresenter.py b/src/snapred/ui/presenter/WorkflowPresenter.py index c742cb59f..2a6d64321 100644 --- a/src/snapred/ui/presenter/WorkflowPresenter.py +++ b/src/snapred/ui/presenter/WorkflowPresenter.py @@ -29,7 +29,7 @@ def __init__( iterateLambda=None, resetLambda=None, cancelLambda=None, - completionMessage=None, + completionMessageLambda=None, parent=None, ): super().__init__() @@ -37,7 +37,7 @@ def __init__( # 'WorkerPool' is a singleton: # declaring it as an instance attribute, rather than a class attribute, # allows singleton reset during testing. - self.completionMessage = completionMessage + self.completionMessageLambda = completionMessageLambda self.worker_pool = WorkerPool() @@ -144,7 +144,7 @@ def advanceWorkflow(self): QMessageBox.information( self.view, "‧₊Workflow Complete‧₊", - self.completionMessage, + self.completionMessageLambda(), ) self.reset() else: diff --git a/src/snapred/ui/widget/Workflow.py b/src/snapred/ui/widget/Workflow.py index 9938fe47e..e99bd3d8f 100644 --- a/src/snapred/ui/widget/Workflow.py +++ b/src/snapred/ui/widget/Workflow.py @@ -11,7 +11,7 @@ def __init__( iterateLambda=None, resetLambda=None, cancelLambda=None, - completionMessage=None, + completionMessageLambda=None, parent=None, ): # default loading subview @@ -21,7 +21,7 @@ def __init__( iterateLambda=iterateLambda, resetLambda=resetLambda, cancelLambda=cancelLambda, - completionMessage=completionMessage, + completionMessageLambda=completionMessageLambda, parent=parent, ) diff --git a/src/snapred/ui/workflow/ReductionWorkflow.py b/src/snapred/ui/workflow/ReductionWorkflow.py index e34bc3749..ebc9edb06 100644 --- a/src/snapred/ui/workflow/ReductionWorkflow.py +++ b/src/snapred/ui/workflow/ReductionWorkflow.py @@ -42,9 +42,7 @@ def __init__(self, parent=None): startLambda=self.start, # Retain reduction-output workspaces. resetLambda=lambda: self.reset(True), - completionMessage=( - "Reduction has completed successfully.\n" "Your workspaces are available in the workspace list." - ), + completionMessageLambda=self.completionMessage, parent=parent, ) .addNode( @@ -53,7 +51,6 @@ def __init__(self, parent=None): "Reduction", continueAnywayHandler=self._continueAnywayHandler, ) - # .addNode(self._nothing, self._reductionSaveView, "Save") .build() ) @@ -66,6 +63,27 @@ def _enableConvertToUnits(self): def _nothing(self, workflowPresenter): # noqa: ARG002 return SNAPResponse(code=200) + def completionMessage(self): + panelText = "" + if ( + self.continueAnywayFlags is not None + and ContinueWarning.Type.NO_WRITE_PERMISSIONS in self.continueAnywayFlags + ): + panelText = ( + "

You didn't have permissions to write to " + + f"
{self.savePath},
" + + "but you can still save using the workbench tools.

" + + "

Please remember to save your output workspaces!

" + ) + else: + panelText = ( + "

Reduction has completed successfully!" + + "
Reduction workspaces have been saved to " + + f"
{self.savePath}.

" + + "

If required later, these can be reloaded into Mantid workbench using 'LoadNexus'.

" + ) + return panelText + @ExceptionToErrLog def _populatePixelMaskDropdown(self): if len(self._reductionRequestView.getRunNumbers()) == 0: @@ -156,10 +174,7 @@ def _triggerReduction(self, workflowPresenter): record, unfocusedData = response.data.record, response.data.unfocusedData # .. update "save" panel message: - savePath = self.request(path="reduction/getSavePath", payload=record.runNumber).data - self._reductionSaveView.updateContinueAnyway(self.continueAnywayFlags) - # Warning: 'updateSavePath' uses the current 'continueAnywayFlags' - self._reductionSaveView.updateSavePath(savePath) + self.savePath = self.request(path="reduction/getSavePath", payload=record.runNumber).data # Save the reduced data. (This is automatic: it happens before the "save" panel opens.) if ContinueWarning.Type.NO_WRITE_PERMISSIONS not in self.continueAnywayFlags: diff --git a/src/snapred/ui/workflow/WorkflowBuilder.py b/src/snapred/ui/workflow/WorkflowBuilder.py index 77639fe05..d7f517ecc 100644 --- a/src/snapred/ui/workflow/WorkflowBuilder.py +++ b/src/snapred/ui/workflow/WorkflowBuilder.py @@ -12,14 +12,14 @@ def __init__( resetLambda=None, cancelLambda=None, parent=None, - completionMessage=Config["ui.default.workflow.completionMessage"], + completionMessageLambda=lambda: Config["ui.default.workflow.completionMessage"], ): self.parent = parent self._startLambda = startLambda self._iterateLambda = iterateLambda self._resetLambda = resetLambda self._cancelLambda = cancelLambda - self._completionMessage = completionMessage + self._completionMessageLambda = completionMessageLambda self._workflow = None def addNode( @@ -57,6 +57,6 @@ def build(self): iterateLambda=self._iterateLambda, resetLambda=self._resetLambda, cancelLambda=self._cancelLambda, - completionMessage=self._completionMessage, + completionMessageLambda=self._completionMessageLambda, parent=self.parent, ) diff --git a/src/snapred/ui/workflow/WorkflowImplementer.py b/src/snapred/ui/workflow/WorkflowImplementer.py index ae2bfe194..d0df2c8f9 100644 --- a/src/snapred/ui/workflow/WorkflowImplementer.py +++ b/src/snapred/ui/workflow/WorkflowImplementer.py @@ -11,6 +11,7 @@ ) from snapred.backend.error.ContinueWarning import ContinueWarning from snapred.backend.log.logger import snapredLogger +from snapred.meta.Config import Config from snapred.ui.handler.SNAPResponseHandler import SNAPResponseHandler from snapred.ui.widget.Workflow import Workflow @@ -117,6 +118,9 @@ def complete(self): for hook in self.resetHooks: hook() + def completionMessage(self): + return Config["ui.default.workflow.completionMessage"] + def _request(self, request: SNAPRequest): response = self.interfaceController.executeRequest(request) self._handleComplications(response)