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