From 42f95290865f0837d8b2d8b5789760d7fd912d2a Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 29 Dec 2008 12:27:46 +0000 Subject: [PATCH] work in progress: task management: creation of work items OK git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3096 fd906abe-77d9-0310-91a1-e0d9ade77398 --- organize/configure.zcml | 2 +- organize/interfaces.py | 3 ++- organize/work.py | 12 +++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) 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]