From e0bdc8480658370cd6a02e32330ffad135d70374 Mon Sep 17 00:00:00 2001 From: "Harry (Open ERP)" Date: Mon, 8 Feb 2010 12:46:56 +0530 Subject: [PATCH] [FIX] project: when delegrated user close task, parent task should reopen if pending bzr revid: hmo@tinyerp.com-20100208071656-o2omd39a55oycx8p --- addons/project/project.py | 15 ++++++++------- addons/project/wizard/task_delegate.py | 7 ++++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/addons/project/project.py b/addons/project/project.py index 9625db08fc1..9cd0dc65647 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -371,13 +371,14 @@ class task(osv.osv): 'ref_doc2': 'project.project,%d'% (project.id,), }) self.write(cr, uid, [task.id], {'state': 'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S'), 'remaining_hours': 0.0}) - if task.parent_ids and task.parent_ids.state in ('pending','draft'): - reopen = True - for child in task.parent_ids.child_ids: - if child.id != task.id and child.state not in ('done','cancelled'): - reopen = False - if reopen: - self.do_reopen(cr, uid, [task.parent_ids.id]) + for parent_id in task.parent_ids: + if parent_id.state in ('pending','draft'): + reopen = True + for child in parent_id.child_ids: + if child.id != task.id and child.state not in ('done','cancelled'): + reopen = False + if reopen: + self.do_reopen(cr, uid, [parent_id.id]) return True def do_reopen(self, cr, uid, ids, *args): diff --git a/addons/project/wizard/task_delegate.py b/addons/project/wizard/task_delegate.py index 35fe2019ea6..7716b90929c 100644 --- a/addons/project/wizard/task_delegate.py +++ b/addons/project/wizard/task_delegate.py @@ -52,12 +52,12 @@ class wizard_delegate(wizard.interface): task_obj = pooler.get_pool(cr.dbname).get('project.task') task = task_obj.browse(cr, uid, data['id'], context) newname = data['form']['prefix'] or '' - task_obj.copy(cr, uid, data['id'], { + new_task_id = task_obj.copy(cr, uid, data['id'], { 'name': data['form']['name'], 'user_id': data['form']['user_id'], 'planned_hours': data['form']['planned_hours'], 'remaining_hours': data['form']['planned_hours'], - 'parent_id': data['id'], + 'parent_ids': [(6, 0, [data['id']])], 'state': 'open', 'description': data['form']['new_task_description'] or '', 'child_ids': [], @@ -65,7 +65,8 @@ class wizard_delegate(wizard.interface): }) task_obj.write(cr, uid, [data['id']], { 'remaining_hours': data['form']['planned_hours_me'], - 'name': newname + 'name': newname, + 'child_ids': [(6, 0, [new_task_id])] }) if data['form']['state']=='pending': task_obj.do_pending(cr, uid, [data['id']])