From f3dd2a8b090d56b337c649b9588bf1ddc84771f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Chirico=20Indreb=C3=B8?= Date: Wed, 17 Apr 2024 16:11:20 +0200 Subject: [PATCH] Update remaining steps upon task completion --- src/isar/state_machine/state_machine.py | 10 ++++++++++ src/isar/state_machine/states/monitor.py | 1 + tests/isar/state_machine/states/test_monitor.py | 4 +++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/isar/state_machine/state_machine.py b/src/isar/state_machine/state_machine.py index c054a87a..4ccfae60 100644 --- a/src/isar/state_machine/state_machine.py +++ b/src/isar/state_machine/state_machine.py @@ -396,6 +396,16 @@ def update_current_step(self): if self.current_task: self.current_step = self.current_task.next_step() + def update_remaining_steps(self): + if self.current_task: + for step in self.current_task.steps: + if ( + step.status == StepStatus.InProgress + or step.status == StepStatus.NotStarted + ): + step.status = self.current_task.status + self.publish_step_status(step=step) + def update_state(self): """Updates the current state of the state machine.""" self.current_state = States(self.state) diff --git a/src/isar/state_machine/states/monitor.py b/src/isar/state_machine/states/monitor.py index 8540307b..b221ebde 100644 --- a/src/isar/state_machine/states/monitor.py +++ b/src/isar/state_machine/states/monitor.py @@ -132,6 +132,7 @@ def _run(self) -> None: self.state_machine.current_task ) if self.state_machine.current_task.status == TaskStatus.Successful: + self.state_machine.update_remaining_steps() try: self.state_machine.current_task = ( self.state_machine.task_selector.next_task() diff --git a/tests/isar/state_machine/states/test_monitor.py b/tests/isar/state_machine/states/test_monitor.py index 54633c67..b821a603 100644 --- a/tests/isar/state_machine/states/test_monitor.py +++ b/tests/isar/state_machine/states/test_monitor.py @@ -40,7 +40,9 @@ def test_should_only_upload_if_status_is_completed( step.status = StepStatus.Successful if is_status_successful else StepStatus.Failed task: Task = Task(steps=[step]) mission: Mission = Mission(tasks=[task]) - mission.status = MissionStatus.Successful if is_status_successful else MissionStatus.Failed + mission.status = ( + MissionStatus.Successful if is_status_successful else MissionStatus.Failed + ) monitor.state_machine.current_mission = mission monitor.state_machine.current_task = task