diff --git a/stateful/base.py b/stateful/base.py index dffd116..df21c27 100644 --- a/stateful/base.py +++ b/stateful/base.py @@ -93,6 +93,8 @@ class StatefulAdapter(Stateful): statesAttributeName = '__stateful_states__' + request = None + def __init__(self, context): self.context = context @@ -110,7 +112,7 @@ class StatefulAdapter(Stateful): def notify(self, transition, previousState): transObject = self.getStatesDefinition().transitions[transition] - notify(TransitionEvent(self.context, transObject, previousState)) + notify(TransitionEvent(self.context, transObject, previousState, self.request)) class IndexInfo(object): @@ -135,9 +137,10 @@ class TransitionEvent(ObjectEvent): implements(ITransitionEvent) - def __init__(self, obj, transition, previousState): + def __init__(self, obj, transition, previousState, request=None): super(TransitionEvent, self).__init__(obj) self.transition = transition self.previousState = previousState + self.request = request diff --git a/stateful/interfaces.py b/stateful/interfaces.py index 9e55e81..9e26b87 100644 --- a/stateful/interfaces.py +++ b/stateful/interfaces.py @@ -83,6 +83,8 @@ class IStateful(Interface): for the current state. """ + request = Attribute('Optional publication request.') + class IHistorizable(Interface): """ An object that may record history information, e.g. when @@ -136,3 +138,4 @@ class ITransitionEvent(IObjectEvent): transition = Attribute('The transition.') previousState = Attribute('The name of the state before the transition.') + request = Attribute('Optional publication request.')