Merge lp:~openerp-dev/openobject-addons/trunk-bug-928178-kjo into lp:openobject-addons

Proposed by Kuldeep Joshi(OpenERP)
Status: Work in progress
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-bug-928178-kjo
Merge into: lp:openobject-addons
Diff against target: 84 lines (+52/-1)
1 file modified
project_long_term/project_long_term.py (+52/-1)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-bug-928178-kjo
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+92217@code.launchpad.net

Description of the change

set project phases relation for project templates

To post a comment you must log in.

Unmerged revisions

6516. By Kuldeep Joshi(OpenERP)

[FIX]project_long_term: set relation for template code

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'project_long_term/project_long_term.py'
2--- project_long_term/project_long_term.py 2012-01-31 13:36:57 +0000
3+++ project_long_term/project_long_term.py 2012-02-09 07:50:29 +0000
4@@ -139,7 +139,10 @@
5 default = {}
6 if not default.get('name', False):
7 default['name'] = self.browse(cr, uid, id, context=context).name + _(' (copy)')
8- return super(project_phase, self).copy(cr, uid, id, default, context)
9+ if context.get('project'):
10+ default['task_ids']=[]
11+ res = super(project_phase, self).copy(cr, uid, id, default, context)
12+ return res
13
14 def set_draft(self, cr, uid, ids, *args):
15 self.write(cr, uid, ids, {'state': 'draft'})
16@@ -198,6 +201,26 @@
17 result += "\n"
18
19 return result
20+
21+ def duplicate_phase(self, cr, uid, map_ids, context=None):
22+ for new in map_ids.values():
23+ phase = self.browse(cr, uid, new, context)
24+ child_ids = [ ch.id for ch in phase.next_phase_ids]
25+ if phase.next_phase_ids:
26+ for child in phase.next_phase_ids:
27+ if child.id in map_ids.keys():
28+ child_ids.remove(child.id)
29+ child_ids.append(map_ids[child.id])
30+
31+ parent_ids = [ ch.id for ch in phase.previous_phase_ids]
32+ if phase.previous_phase_ids:
33+ for parent in phase.previous_phase_ids:
34+ if parent.id in map_ids.keys():
35+ parent_ids.remove(parent.id)
36+ parent_ids.append(map_ids[parent.id])
37+ #FIXME why there is already the copy and the old one
38+ self.write(cr, uid, new, {'previous_phase_ids':[(6,0,set(parent_ids))], 'next_phase_ids':[(6,0, set(child_ids))]})
39+
40 project_phase()
41
42 class project_user_allocation(osv.osv):
43@@ -218,6 +241,33 @@
44 _columns = {
45 'phase_ids': fields.one2many('project.phase', 'project_id', "Project Phases"),
46 }
47+
48+ def map_phase(self,cr,uid,project_id,new_id,context=None):
49+ #copy all the phase manually
50+ phase_obj = self.pool.get('project.phase')
51+ proj = self.browse(cr, uid, project_id, context=context)
52+ map_phase_id = {}
53+ for phase in proj.phase_ids:
54+ map_phase_id[phase.id] = phase_obj.copy(cr, uid, phase.id, {}, context=context)
55+ self.write(cr, uid, new_id, {'phase_ids':[(6,0, map_phase_id.values())]})
56+ phase_obj.duplicate_phase(cr, uid, map_phase_id, context=context)
57+ return True
58+
59+ def copy(self, cr, uid, id, default={}, context=None):
60+ if context is None:
61+ context = {}
62+
63+ default = default or {}
64+ default['phase_ids'] = []
65+ context.update({'project': True})
66+ proj = self.browse(cr, uid, id, context=context)
67+ if not default.get('name', False):
68+ default['name'] = proj.name + _(' (copy)')
69+
70+ res = super(project, self).copy(cr, uid, id, default, context)
71+ self.map_phase(cr,uid,id,res,context)
72+ return res
73+
74 def schedule_phases(self, cr, uid, ids, context=None):
75 context = context or {}
76 if type(ids) in (long, int,):
77@@ -264,6 +314,7 @@
78 _columns = {
79 'phase_id': fields.many2one('project.phase', 'Project Phase'),
80 }
81+
82 project_task()
83
84 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

Subscribers

People subscribed via source and target branches

to all changes: