From f21f43ed8ebf2e54b4b0cc662654f765c54d22a9 Mon Sep 17 00:00:00 2001 From: "Harry (Open ERP)" Date: Fri, 22 Jan 2010 13:11:48 +0530 Subject: [PATCH] [ADD+IMP] project: Made wizard for duplicate template and call it in from project view on click button for duplicate template bzr revid: hmo@tinyerp.com-20100122074148-6adgv1fp7j117fe6 --- addons/project/project.py | 19 ++--- addons/project/project_view.xml | 4 +- addons/project/project_wizard.xml | 5 ++ addons/project/wizard/__init__.py | 1 + .../wizard/duplicate_template_wizard.py | 71 +++++++++++++++++++ 5 files changed, 90 insertions(+), 10 deletions(-) create mode 100644 addons/project/wizard/duplicate_template_wizard.py diff --git a/addons/project/project.py b/addons/project/project.py index c7dc5ece780..9174449e898 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -197,21 +197,24 @@ class project(osv.osv): return res def duplicate_template(self, cr, uid, ids,context={}): + result = [] for proj in self.browse(cr, uid, ids): - parent_id=context.get('parent_id',False) - new_id=self.pool.get('project.project').copy(cr, uid, proj.id,default={'name':proj.name+_(' (copy)'),'state':'open','parent_id':parent_id}) + parent_id = context.get('parent_id',False) + new_id = self.pool.get('project.project').copy(cr, uid, proj.id, default = { + 'name': proj.name +_(' (copy)'), + 'state':'open', + 'parent_id':parent_id}) + result.append(new_id) cr.execute('select id from project_task where project_id=%s', (proj.id,)) res = cr.fetchall() for (tasks_id,) in res: - self.pool.get('project.task').copy(cr, uid, tasks_id,default={'project_id':new_id,'active':True}, context=context) + self.pool.get('project.task').copy(cr, uid, tasks_id, default = { + 'project_id': new_id, + 'active':True}, context=context) child_ids = self.search(cr, uid, [('parent_id','=', proj.id)]) if child_ids: self.duplicate_template(cr, uid, child_ids, context={'parent_id':new_id}) - - # TODO : Improve this to open the new project (using a wizard) - - cr.commit() - raise osv.except_osv(_('Operation Done'), _('A new project has been created !\nWe suggest you to close this one and work on this new project.')) + return result # set active value for a project, its sub projects and its tasks def setActive(self, cr, uid, ids, value=True, context={}): diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index cde3f076df9..55819fb911b 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -58,9 +58,9 @@