diff --git a/atst/models/mixins/state_machines.py b/atst/models/mixins/state_machines.py index 43044be0..6938c8a9 100644 --- a/atst/models/mixins/state_machines.py +++ b/atst/models/mixins/state_machines.py @@ -111,14 +111,6 @@ class FSMMixin: if finish_trigger in self.machine.get_triggers(self.current_state.name): self.trigger(finish_trigger) - def _get_first_stage_create_trigger(self): - return list( - filter( - lambda trigger: trigger.startswith("create_"), - self.machine.get_triggers(FSMStates.STARTED.name), - ) - )[0] - def prepare_init(self, event): pass diff --git a/atst/models/portfolio_state_machine.py b/atst/models/portfolio_state_machine.py index d3794a04..b8f29f24 100644 --- a/atst/models/portfolio_state_machine.py +++ b/atst/models/portfolio_state_machine.py @@ -98,7 +98,13 @@ class PortfolioStateMachine( elif self.current_state == FSMStates.STARTED: # get the first trigger that starts with 'create_' - create_trigger = self._get_first_stage_create_trigger() + create_trigger = next( + filter( + lambda trigger: trigger.startswith("create_"), + self.machine.get_triggers(FSMStates.STARTED.name), + ), + None, + ) if create_trigger: self.trigger(create_trigger, **kwargs) else: @@ -108,20 +114,16 @@ class PortfolioStateMachine( # the create trigger for the next stage should be in the available # triggers for the current state triggers = self.machine.get_triggers(state_obj.name) - try: - create_trigger = list( - filter( - lambda trigger: trigger.startswith("create_"), - self.machine.get_triggers(self.state.name), - ) - )[0] - except IndexError: - # are we done ? - pass - else: + create_trigger = next( + filter( + lambda trigger: trigger.startswith("create_"), + self.machine.get_triggers(self.state.name), + ), + None, + ) + if create_trigger is not None: self.trigger(create_trigger, **kwargs) - # @with_payload def after_in_progress_callback(self, event): stage = self.current_state.name.split("_IN_PROGRESS")[0].lower()