add transition event

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2559 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-04-27 14:27:33 +00:00
parent cd46c0a345
commit 7cd7a574c0
3 changed files with 31 additions and 1 deletions

View file

@ -24,10 +24,11 @@ $Id$
from persistent.interfaces import IPersistent
from persistent.mapping import PersistentMapping
from zope import component
from zope.component import adapts
from zope.interface import implements
from cybertools.stateful.interfaces import IStateful
from cybertools.stateful.interfaces import IStateful, IStatefulIndexInfo
from cybertools.stateful.definition import statesDefinitions
@ -94,3 +95,19 @@ class StatefulAdapter(Stateful):
statesAttr[self.statesDefinition] = value
state = property(getState, setState)
class IndexInfo(object):
implements(IStatefulIndexInfo)
availableStatesDefinitions = [] # to be overwritten by subclass!
def __init__(self, context):
self.context = context
@property
def tokens(self):
for std in self.availableStatesDefinitions:
stf = component.getAdapter(self.context, IStateful, name=std)
yield ':'.join((std, stf.state))

View file

@ -107,6 +107,7 @@ class TransitionEvent(ObjectEvent):
self.transition = transition
self.previousState = previousState
# dummy default states definition
defaultSD = StatesDefinition('default',

View file

@ -113,6 +113,18 @@ class IStatesDefinition(Interface):
"""
class IStatefulIndexInfo(Interface):
""" Provide a list of tokens to be used for index the states
of an object in the catalog.
"""
tokens = Attribute('A sequence of strings to be used for indexing the '
'states; format: [<statesdefinition name>:<state name>, ...].')
availableStatesDefinitions = Attribute('A sequence of strings with the '
'names of all states definitions currently available.')
class ITransitionEvent(IObjectEvent):
""" Fires when the state of an object is changed.
"""