diff --git a/organize/configure.zcml b/organize/configure.zcml index 2746e4d..6099712 100644 --- a/organize/configure.zcml +++ b/organize/configure.zcml @@ -11,7 +11,7 @@ - diff --git a/organize/interfaces.py b/organize/interfaces.py index 3dd6472..b0bd4b3 100644 --- a/organize/interfaces.py +++ b/organize/interfaces.py @@ -28,6 +28,7 @@ from zope.interface import Interface, Attribute from zope.i18nmessageid import MessageFactory from cybertools.composer.schema.factory import Email +from cybertools.tracking.interfaces import ITrack from cybertools.util.jeep import Jeep, Term _ = MessageFactory('cybertools.organize') @@ -420,7 +421,7 @@ class IJobManager(Interface): # work -class IWorkItem(Interface): +class IWorkItem(ITrack): """ A single piece of work, started and finished at a certain time, done by exactly one party (usually a person). """ diff --git a/organize/work.py b/organize/work.py index aec0584..e389c29 100644 --- a/organize/work.py +++ b/organize/work.py @@ -180,14 +180,13 @@ class WorkItem(Stateful, Track): self.startWork(**kw) def action_finish(self, **kw): + if 'description' in kw: + self.data['description'] = kw.pop('description') if self.state == 'new': self.assign(kw.pop('party', None)) + if self.state == 'assigned': + self.startWork(start=kw.pop('start', None)) self.stopWork(**kw) - #pred = self.predecessor # better to finish predecessors manually? - #while pred is not None: - # wi = getParent(self)[pred] - # wi.doTransition('finish') - # pred = wi.pred # auxiliary methods @@ -226,6 +225,9 @@ class WorkItems(object): def __getitem__(self, key): return self.context[key] + def __iter__(self): + return iter(self.context.values()) + def add(self, task, party, run=0, **kw): trackId = self.context.saveUserTrack(task, run, party, {}) track = self[trackId]