'move' action: correctly inactivate old 'done' or 'finished' items

This commit is contained in:
Helmut Merz 2015-03-15 10:22:38 +01:00
parent c9490bb1e9
commit ba529fad7b

View file

@ -42,7 +42,7 @@ def workItemStates():
return StatesDefinition('workItemStates', return StatesDefinition('workItemStates',
State('new', 'new', State('new', 'new',
('plan', 'accept', 'start', 'work', 'finish', 'delegate', ('plan', 'accept', 'start', 'work', 'finish', 'delegate',
'cancel', 'reopen'), 'cancel', 'reopen'), # 'move', # ?
color='red'), color='red'),
State('planned', 'planned', State('planned', 'planned',
('plan', 'accept', 'start', 'work', 'finish', 'delegate', ('plan', 'accept', 'start', 'work', 'finish', 'delegate',
@ -79,8 +79,12 @@ def workItemStates():
State('replaced', 'replaced', (), color='grey'), State('replaced', 'replaced', (), color='grey'),
State('planned_x', 'planned', (), color='red'), State('planned_x', 'planned', (), color='red'),
State('accepted_x', 'accepted', (), color='yellow'), State('accepted_x', 'accepted', (), color='yellow'),
State('done_x', 'done', (), color='lightgreen'), State('done_x', 'done',
State('finished_x', 'finished', (), color='green'), ('modify', 'move', 'cancel'), color='lightgreen'),
State('finished_x', 'finished',
('modify','move', 'cancel'), color='green'),
#State('done_y', 'done', (), color='grey'),
#State('finished_y', 'finished', (), color='grey'),
# transitions: # transitions:
Transition('plan', 'plan', 'planned'), Transition('plan', 'plan', 'planned'),
Transition('accept', 'accept', 'accepted'), Transition('accept', 'accept', 'accepted'),
@ -306,10 +310,14 @@ class WorkItem(Stateful, Track):
xkw = dict(kw) xkw = dict(kw)
for k in ('deadline', 'start', 'end'): for k in ('deadline', 'start', 'end'):
xkw.pop(k, None) # do not change on source item xkw.pop(k, None) # do not change on source item
moved = self.createNew('move', userName, **xkw) if self.state == 'new': # should this be possible?
moved.userName = self.userName moved = self
moved.state = 'moved' self.setData(kw)
moved.reindex() if self.state in ('done', 'finished', 'running'):
moved = self # is this OK? or better new state ..._y?
else:
moved = self.createNew('move', userName, **xkw)
moved.userName = self.userName
task = kw.pop('task', None) task = kw.pop('task', None)
new = moved.createNew(None, userName, taskId=task, runId=0, **kw) new = moved.createNew(None, userName, taskId=task, runId=0, **kw)
new.userName = self.userName new.userName = self.userName
@ -317,10 +325,15 @@ class WorkItem(Stateful, Track):
new.state = self.state new.state = self.state
new.reindex() new.reindex()
moved.data['target'] = new.name moved.data['target'] = new.name
if self.state in ('planned', 'accepted', 'delegated', 'moved', moved.state = 'moved'
'done', 'finished'): moved.reindex()
if self.state in ('planned', 'accepted', 'delegated', 'moved'):
#'done', 'finished'):
self.state = self.state + '_x' self.state = self.state + '_x'
self.reindex('state') self.reindex('state')
#elif self.state in ('done', 'finished'):
# self.state = self.state + '_y'
# self.reindex('state')
return new return new
def close(self, userName, **kw): def close(self, userName, **kw):