diff options
| author | husen daudi <hda@hda> | 2009-04-13 18:13:13 +0530 |
|---|---|---|
| committer | husen daudi <hda@hda> | 2009-04-13 18:13:13 +0530 |
| commit | ea2efc15067b3b5f6448a5bce7baae8880c7bfbb (patch) | |
| tree | 921b362d733c0e601792aa59955a81cd70722f3a /addons/project/project.py | |
| parent | 7767525f1edc8c5e7dd32678ffce9ed2d19310a7 (diff) | |
| parent | 4b180641bdc3356ec778a98bc10d936042a8fc12 (diff) | |
Ported all bugs from trunk to stable
bzr revid: hda@hda-20090413124313-x9gdobzpxf1lkfxl
Diffstat (limited to 'addons/project/project.py')
| -rw-r--r-- | addons/project/project.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/addons/project/project.py b/addons/project/project.py index 4e9307328bc..e180bf92a1b 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -24,6 +24,7 @@ from lxml import etree from mx import DateTime from mx.DateTime import now import time +from tools.translate import _ from osv import fields, osv from tools.translate import _ @@ -288,6 +289,7 @@ class task(osv.osv): 'delay_hours': fields.function(_hours_get, method=True, string='Delay Hours', multi='hours', store=True, help="Computed as: Total Time - Estimated Time. It gives the difference of the time estimated by the project manager and the real time to close the task."), 'user_id': fields.many2one('res.users', 'Assigned to'), + 'delegated_user_id': fields.related('child_ids','user_id',type='many2one', relation='res.users', string='Delegated To'), 'partner_id': fields.many2one('res.partner', 'Partner'), 'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'), } @@ -336,7 +338,7 @@ class task(osv.osv): if project: if project.warn_manager and project.manager and (project.manager.id != uid): request.create(cr, uid, { - 'name': "Task '%s' closed" % task.name, + 'name': _("Task '%s' closed") % task.name, 'state': 'waiting', 'act_from': uid, 'act_to': project.manager.id, @@ -346,7 +348,12 @@ class task(osv.osv): }) self.write(cr, uid, [task.id], {'state': 'done', 'date_close':time.strftime('%Y-%m-%d %H:%M:%S'), 'remaining_hours': 0.0}) if task.parent_id and task.parent_id.state in ('pending','draft'): - self.do_reopen(cr, uid, [task.parent_id.id]) + reopen = True + for child in task.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, [task.parent_id.id]) return True def do_reopen(self, cr, uid, ids, *args): @@ -356,7 +363,7 @@ class task(osv.osv): project = task.project_id if project and project.warn_manager and project.manager.id and (project.manager.id != uid): request.create(cr, uid, { - 'name': "Task '%s' set in progress" % task.name, + 'name': _("Task '%s' set in progress") % task.name, 'state': 'waiting', 'act_from': uid, 'act_to': project.manager.id, @@ -375,7 +382,7 @@ class task(osv.osv): project = task.project_id if project.warn_manager and project.manager and (project.manager.id != uid): request.create(cr, uid, { - 'name': "Task '%s' cancelled" % task.name, + 'name': _("Task '%s' cancelled") % task.name, 'state': 'waiting', 'act_from': uid, 'act_to': project.manager.id, |
