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]