=== modified file 'project/project.py' --- project/project.py 2013-06-17 13:38:25 +0000 +++ project/project.py 2014-03-05 05:11:47 +0000 @@ -343,12 +343,44 @@ if context is None: context = {} map_task_id = {} + map_phase_id = {} task_obj = self.pool.get('project.task') + phase_obj = self.pool.get('project.phase') proj = self.browse(cr, uid, old_project_id, context=context) + + proj_data = self.read(cr, uid, old_project_id, [], context=context) + phase_id = [] + temp_task_ids = [] + if proj_data.get('phase_ids', False): + for phase in proj.phase_ids: + map_phase_id[phase.id] = phase_obj.copy(cr, uid, phase.id, {'project_id' : new_project_id, 'task_ids': []}, context=context) + for task in phase.task_ids: + map_task_id[task.id] = task_obj.copy(cr, uid, task.id, {'phase_id' : map_phase_id[phase.id]}, context=context) + temp_task_ids.append(task.id) + temp_task_ids.append(map_task_id[task.id]) for task in proj.tasks: - map_task_id[task.id] = task_obj.copy(cr, uid, task.id, {}, context=context) - self.write(cr, uid, [new_project_id], {'tasks':[(6,0, map_task_id.values())]}) - task_obj.duplicate_task(cr, uid, map_task_id, context=context) + if task.id not in temp_task_ids: + map_task_id[task.id] = task_obj.copy(cr, uid, task.id, {}, context=context) + temp_task_ids.append(task.id) +# task_obj._generate_task(cr, uid, phase_obj.browse(cr, uid, map_phase_id[phase.id], context=context).task_ids, ident=8, context=context) +# task_obj._generate_task(cr, uid, phase_obj.browse(cr, uid, map_phase_id[phase.id], context=context).task_ids, ident=8, context=context) + +# for task in proj.tasks: +# map_task_id[task.id] = task_obj.copy(cr, uid, task.id, {}, context=context) +# print "task.phase_id.id ",task.phase_id.id +# asdnasflasnfklasnl +# old_phase_id.append(task.phase_id.id) +# if task.phase_id.id not in old_phase_id: +# map_phase_id[phase.id] = phase_obj.copy(cr, uid, task.phase_id.id, {}, context=context) +# task_obj.write(cr, uid, map_task_id[task.id], {'phase_id' : map_phase_id[phase.id]}, context=context) +# for phase in map_phase_id: +# phase_id.append(phase_obj.browse(cr, uid, phase, context=context)) +# +# phase_obj.generate_phase(cr, uid, phase_id, context=context) + if proj_data.get('phase_ids', False): + self.write(cr, uid, [new_project_id], {'tasks' : [(6, 0, map_task_id.values())], 'phase_ids' : [(6, 0, map_phase_id.values())]}) + else: + self.write(cr, uid, [new_project_id], {'tasks' : [(6, 0, map_task_id.values())]}) return True def copy(self, cr, uid, id, default=None, context=None): @@ -358,9 +390,12 @@ default = {} context['active_test'] = False + context.update({'phase_ids' : []}) + context.update({'tasks' : []}) default['state'] = 'open' default['line_ids'] = [] default['tasks'] = [] + default['phase_ids'] = [] default.pop('alias_name', None) default.pop('alias_id', None) proj = self.browse(cr, uid, id, context=context)