← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-addons/6.0-opw-4635-tta into lp:openobject-addons/6.0

 

Tejaskumar Tank (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/6.0-opw-4635-tta into lp:openobject-addons/6.0.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-4635-tta/+merge/59189
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-4635-tta/+merge/59189
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/6.0-opw-4635-tta.
=== modified file 'project_long_term/project_long_term.py'
--- project_long_term/project_long_term.py	2011-01-20 16:49:20 +0000
+++ project_long_term/project_long_term.py	2011-04-27 09:23:52 +0000
@@ -581,6 +581,37 @@
             context = {}
         allocation = {}
         return allocation
+    def copy(self, cr, uid, id, default=None, context=None):
+        if context is None:
+            context = {}
+        if default is None:
+            default = {}
+        pool_task = self.pool.get('project.task')
+        pool_phase = self.pool.get('project.phase')
+        proj = self.browse(cr, uid, id, context=context)
+        map_phase = {} #maintains a dictionary of old to new phase
+        map_tasks = {} #maintains a dictionary of tasks either orphan to related to any phase
+        #Creating a list of new phases
+        for phase in proj.phase_ids:
+              map_phase[phase.id] = pool_phase.copy(cr, uid, phase.id, default={}, context=context)   
+        p = map_phase.keys() + map_phase.values()
+
+        for phase_id in map_phase.values():
+            for task in pool_phase.browse(cr, uid, phase_id, context).task_ids:
+                map_tasks[task.id] = phase_id                       
+
+        #Creating a list of tasks which are not linked to phases
+        for task in proj.tasks:
+            if (not task.phase_id.id) or (task.phase_id.id and task.phase_id.id not in list_phases) or (task.phase_id.id and task.phase_id.id in list_phases and not task.active):
+                #Copy of Real tasks (without Phase) and inactive template tasks
+                default_phase = task.phase_id.id and {'phase_id' : map_phase.get(task.phase_id.id,False)} or {}
+                map_tasks[pool_task.copy(cr, uid, task.id, default_phase, context=context)] = map_phase.get(task.phase_id.id,False)
+        
+        default.update({'tasks':[(6,0, map_tasks.keys())]})
+        default.update({'phase_ids':[(6,0, map_phase.values())]})
+
+        return super(project, self).copy(cr, uid, id, default, context)
+
 
     def schedule_tasks(self, cr, uid, ids, context=None):
         """