From da785dae559dde0cf77d97237c51f12b5479d636 Mon Sep 17 00:00:00 2001 From: Jigar Amin Date: Tue, 28 Jun 2011 11:09:40 +0530 Subject: [FIX] 1) project - imporved the gantt view of the Task 2) project_long_term:refectored phase scheduling procress bzr revid: jam@tinyerp.com-20110628053940-fg62i9foq6ph1adz --- addons/project_long_term/project_long_term.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 779c7f6d062..9925c59bee4 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -725,11 +725,22 @@ class project_task(osv.osv): 'user_id' : False } + def _get_child_duration(self, cr, uid, tasks, duration, context=None): + #DFS : visit all child + for task in tasks: + if task.child_ids: + duration = self._get_child_duration(cr, uid, task.child_ids, duration, context) + duration += task.planned_hours + return duration + def generate_task(self, cr, uid, task_id, parent=False, flag=False, context=None): if context is None: context = {} task = self.browse(cr, uid, task_id, context=context) - duration = str(task.planned_hours )+ 'H' + duration = task.planned_hours + if task.child_ids: + duration = self._get_child_duration(cr, uid, task.child_ids, duration, context) + duration = str(duration)+ 'H' str_resource = False parent = task.parent_ids if task.phase_id.resource_ids: @@ -745,7 +756,7 @@ class project_task(osv.osv): '''%(task.id, task.name, duration, str_resource) if parent: s +=''' - start = up.Task_%s.end + start = up.Task_%s.start '''%(parent[0].id) else: s = ''' @@ -756,7 +767,7 @@ class project_task(osv.osv): '''%(task.id, task.name, duration, str_resource) if parent: s +=''' - start = up.Task_%s.end + start = up.Task_%s.start '''%(parent[0].id) s += '\n' return s -- cgit v1.2.3 From 8fec9dab1183705ba7ccd2fa69446c7898f1577d Mon Sep 17 00:00:00 2001 From: Jigar Amin Date: Thu, 30 Jun 2011 17:17:31 +0530 Subject: [FIX] project_long_term - scheduling task based on child task paretn shoud be at last bzr revid: jam@tinyerp.com-20110630114731-usnnqe2y834chwb0 --- addons/project_long_term/project_long_term.py | 30 +++++++++++---------------- 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 9925c59bee4..a6437819248 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -23,6 +23,7 @@ from datetime import datetime from tools.translate import _ from osv import fields, osv from resource.faces import task as Task +from operator import itemgetter class project_phase(osv.osv): _name = "project.phase" @@ -725,22 +726,11 @@ class project_task(osv.osv): 'user_id' : False } - def _get_child_duration(self, cr, uid, tasks, duration, context=None): - #DFS : visit all child - for task in tasks: - if task.child_ids: - duration = self._get_child_duration(cr, uid, task.child_ids, duration, context) - duration += task.planned_hours - return duration - def generate_task(self, cr, uid, task_id, parent=False, flag=False, context=None): if context is None: context = {} task = self.browse(cr, uid, task_id, context=context) - duration = task.planned_hours - if task.child_ids: - duration = self._get_child_duration(cr, uid, task.child_ids, duration, context) - duration = str(duration)+ 'H' + duration = str(task.planned_hours)+ 'H' str_resource = False parent = task.parent_ids if task.phase_id.resource_ids: @@ -754,10 +744,12 @@ class project_task(osv.osv): effort = \'%s\' resource = %s '''%(task.id, task.name, duration, str_resource) - if parent: + if task.child_ids: + seq = [[child.planned_hours, child.id] for child in task.child_ids] + seq.sort(key=itemgetter(0)) s +=''' - start = up.Task_%s.start -'''%(parent[0].id) + start = up.Task_%s.end + '''%(seq[-1][1]) else: s = ''' def Task_%s(): @@ -765,10 +757,12 @@ class project_task(osv.osv): effort = \'%s\' resource = %s '''%(task.id, task.name, duration, str_resource) - if parent: + if task.child_ids: + seq = [[child.planned_hours, child.id] for child in task.child_ids] + seq.sort(key=itemgetter(0)) s +=''' - start = up.Task_%s.start -'''%(parent[0].id) + start = up.Task_%s.end +'''%(seq[-1][1]) s += '\n' return s project_task() -- cgit v1.2.3 From 06fb14130a4bb88399c38979d1d07f37fbacf658 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Sat, 2 Jul 2011 01:41:24 +0200 Subject: [IMP] removed method=True params from all fields.function Server revision 3495 odo@openerp.com-20110701232328-flgxulxva70vnyxr removed the need for passing method=True to function fields, so this is the equivalent addons fix, removing it everywhere. Please be careful from now on, and do not pass it anymore! bzr revid: odo@openerp.com-20110701234124-a61zl0idvdfz3hyb --- addons/project_long_term/project_long_term.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a6437819248..6c5ef7890bf 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -120,7 +120,7 @@ class project_phase(osv.osv): 'state': fields.selection([('draft', 'Draft'), ('open', 'In Progress'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True, required=True, help='If the phase is created the state \'Draft\'.\n If the phase is started, the state becomes \'In Progress\'.\n If review is needed the phase is in \'Pending\' state.\ \n If the phase is over, the states is set to \'Done\'.'), - 'total_hours': fields.function(_compute, method=True, string='Total Hours'), + 'total_hours': fields.function(_compute, string='Total Hours'), } _defaults = { 'responsible_id': lambda obj,cr,uid,context: uid, @@ -399,7 +399,7 @@ class project_resource_allocation(osv.osv): res[allocation.id] = name return res _columns = { - 'name': fields.function(get_name, method=True, type='char', size=256), + 'name': fields.function(get_name, type='char', size=256), 'resource_id': fields.many2one('resource.resource', 'Resource', required=True), 'phase_id': fields.many2one('project.phase', 'Project Phase', ondelete='cascade', required=True), 'project_id': fields.related('phase_id', 'project_id', type='many2one', relation="project.project", string='Project', store=True), -- cgit v1.2.3