From bf8a85453c33c1155b32c016b6993ac6a056c21a Mon Sep 17 00:00:00 2001 From: helmutm Date: Tue, 15 Mar 2011 08:53:59 +0000 Subject: [PATCH] allow for more than one 'doBefore' function in a transition git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@4202 fd906abe-77d9-0310-91a1-e0d9ade77398 --- stateful/definition.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/stateful/definition.py b/stateful/definition.py index 8e5cd0a..8afb82c 100644 --- a/stateful/definition.py +++ b/stateful/definition.py @@ -53,6 +53,7 @@ class Action(object): allowed = True permission = None roles = [] + doBefore = [] def __init__(self, name, title=None, **kw): self.name = self.__name__ = name @@ -60,10 +61,6 @@ class Action(object): for k, v in kw.items(): setattr(self, k, v) - @staticmethod - def doBefore(context): - return None - class Transition(Action): @@ -106,7 +103,11 @@ class StatesDefinition(object): if trans not in self.getAvailableTransitionsFor(obj): raise ValueError("Transition '%s' is not reachable from state '%s'." % (transition, obj.getState())) - trans.doBefore(obj) + if isinstance(trans.doBefore, (list, tuple)): + for fct in trans.doBefore: + fct(obj) + else: + trans.doBefore(obj) obj.state = trans.targetState obj.getStateObject().setSecurity(obj)