call next on the results of filter function to get the first value

This commit is contained in:
Philip Kalinsky 2020-01-16 16:14:01 -05:00 committed by tomdds
parent dfaea2d937
commit 67842748b8
2 changed files with 15 additions and 21 deletions

View File

@ -111,14 +111,6 @@ class FSMMixin:
if finish_trigger in self.machine.get_triggers(self.current_state.name): if finish_trigger in self.machine.get_triggers(self.current_state.name):
self.trigger(finish_trigger) 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): def prepare_init(self, event):
pass pass

View File

@ -98,7 +98,13 @@ class PortfolioStateMachine(
elif self.current_state == FSMStates.STARTED: elif self.current_state == FSMStates.STARTED:
# get the first trigger that starts with 'create_' # 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: if create_trigger:
self.trigger(create_trigger, **kwargs) self.trigger(create_trigger, **kwargs)
else: else:
@ -108,20 +114,16 @@ class PortfolioStateMachine(
# the create trigger for the next stage should be in the available # the create trigger for the next stage should be in the available
# triggers for the current state # triggers for the current state
triggers = self.machine.get_triggers(state_obj.name) triggers = self.machine.get_triggers(state_obj.name)
try: create_trigger = next(
create_trigger = list( filter(
filter( lambda trigger: trigger.startswith("create_"),
lambda trigger: trigger.startswith("create_"), self.machine.get_triggers(self.state.name),
self.machine.get_triggers(self.state.name), ),
) None,
)[0] )
except IndexError: if create_trigger is not None:
# are we done ?
pass
else:
self.trigger(create_trigger, **kwargs) self.trigger(create_trigger, **kwargs)
# @with_payload
def after_in_progress_callback(self, event): def after_in_progress_callback(self, event):
stage = self.current_state.name.split("_IN_PROGRESS")[0].lower() stage = self.current_state.name.split("_IN_PROGRESS")[0].lower()