2019-07-05 13:25:59 +00:00
|
|
|
class FSMUpdater:
|
|
|
|
def __init__(self, fsm):
|
|
|
|
self.fsm = fsm
|
|
|
|
|
|
|
|
@property
|
|
|
|
def fsm_update(self):
|
|
|
|
return {
|
|
|
|
'key': 'fsm_update',
|
2019-07-12 21:25:16 +00:00
|
|
|
**self.fsm_update_data
|
2019-07-05 13:25:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@property
|
|
|
|
def fsm_update_data(self):
|
|
|
|
valid_transitions = [
|
|
|
|
{'trigger': trigger}
|
|
|
|
for trigger in self.fsm.get_triggers(self.fsm.state)
|
|
|
|
]
|
|
|
|
last_fsm_event = self.fsm.event_log[-1]
|
|
|
|
last_fsm_event['timestamp'] = last_fsm_event['timestamp'].isoformat()
|
|
|
|
return {
|
|
|
|
'current_state': self.fsm.state,
|
|
|
|
'valid_transitions': valid_transitions,
|
|
|
|
'in_accepted_state': self.fsm.in_accepted_state,
|
|
|
|
'last_event': last_fsm_event
|
|
|
|
}
|