Kuldeep Joshi(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-bug-928178-kjo into 
lp:openobject-addons.

Requested reviews:
  OpenERP Core Team (openerp)
Related bugs:
  Bug #928178 in OpenERP Addons: "project phases not properly used in project 
templates"
  https://bugs.launchpad.net/openobject-addons/+bug/928178

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-928178-kjo/+merge/92217

set project phases relation for project templates
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-928178-kjo/+merge/92217
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-bug-928178-kjo.
=== modified file 'project_long_term/project_long_term.py'
--- project_long_term/project_long_term.py	2012-01-31 13:36:57 +0000
+++ project_long_term/project_long_term.py	2012-02-09 07:50:29 +0000
@@ -139,7 +139,10 @@
             default = {}
         if not default.get('name', False):
             default['name'] = self.browse(cr, uid, id, context=context).name + _(' (copy)')
-        return super(project_phase, self).copy(cr, uid, id, default, context)
+        if context.get('project'):
+            default['task_ids']=[]
+        res = super(project_phase, self).copy(cr, uid, id, default, context)
+        return res
 
     def set_draft(self, cr, uid, ids, *args):
         self.write(cr, uid, ids, {'state': 'draft'})
@@ -198,6 +201,26 @@
             result += "\n"
 
         return result
+
+    def duplicate_phase(self, cr, uid, map_ids, context=None):
+        for new in map_ids.values():
+            phase = self.browse(cr, uid, new, context)
+            child_ids = [ ch.id for ch in phase.next_phase_ids]
+            if phase.next_phase_ids:
+                for child in phase.next_phase_ids:
+                    if child.id in map_ids.keys():
+                        child_ids.remove(child.id)
+                        child_ids.append(map_ids[child.id])
+
+            parent_ids = [ ch.id for ch in phase.previous_phase_ids]
+            if phase.previous_phase_ids:
+                for parent in phase.previous_phase_ids:
+                    if parent.id in map_ids.keys():
+                        parent_ids.remove(parent.id)
+                        parent_ids.append(map_ids[parent.id])
+            #FIXME why there is already the copy and the old one
+            self.write(cr, uid, new, {'previous_phase_ids':[(6,0,set(parent_ids))], 'next_phase_ids':[(6,0, set(child_ids))]})        
+        
 project_phase()
 
 class project_user_allocation(osv.osv):
@@ -218,6 +241,33 @@
     _columns = {
         'phase_ids': fields.one2many('project.phase', 'project_id', "Project Phases"),
     }
+
+    def map_phase(self,cr,uid,project_id,new_id,context=None):
+         #copy all the phase manually
+        phase_obj = self.pool.get('project.phase')
+        proj = self.browse(cr, uid, project_id, context=context)
+        map_phase_id = {}
+        for phase in proj.phase_ids:
+            map_phase_id[phase.id] =  phase_obj.copy(cr, uid, phase.id, {}, context=context)
+        self.write(cr, uid, new_id, {'phase_ids':[(6,0, map_phase_id.values())]})
+        phase_obj.duplicate_phase(cr, uid, map_phase_id, context=context)
+        return True
+  
+    def copy(self, cr, uid, id, default={}, context=None):
+        if context is None:
+            context = {}
+
+        default = default or {}
+        default['phase_ids'] = []
+        context.update({'project': True})
+        proj = self.browse(cr, uid, id, context=context)
+        if not default.get('name', False):
+            default['name'] = proj.name + _(' (copy)')
+
+        res = super(project, self).copy(cr, uid, id, default, context)
+        self.map_phase(cr,uid,id,res,context)
+        return res    
+    
     def schedule_phases(self, cr, uid, ids, context=None):
         context = context or {}
         if type(ids) in (long, int,):
@@ -264,6 +314,7 @@
     _columns = {
         'phase_id': fields.many2one('project.phase', 'Project Phase'),
     }
+    
 project_task()
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to