From bb4274d62041f2cd5061f3549dc11cab1ece17b8 Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Fri, 22 Jan 2010 18:29:45 +0530 Subject: [PATCH] [IMP] project: project_get query improved bzr revid: mra@tinyerp.com-20100122125945-x9d9ve1pb3pccdup --- addons/project/project.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/project/project.py b/addons/project/project.py index 9174449..04df471 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -590,13 +590,15 @@ def _project_get(self, cr, uid, context={}): if uid==1: ids = self.pool.get('project.project').search(cr, uid, []) res = self.pool.get('project.project').read(cr, uid, ids, ['id','name'], context) - else: - # Take Projects only user is manager or member - cr.execute("""SELECT project.id,project.name FROM project_project project + res = [(str(r['id']),r['name']) for r in res] + else: + cr.execute("""SELECT project.id,account.name FROM project_project project LEFT JOIN account_analytic_account account ON account.id = project.category_id - WHERE (account.user_id = %s)""", uid) + WHERE (account.user_id = %s) OR project.id IN (SELECT project_id FROM project_resource_rel + WHERE resource_id IN (SELECT id FROM resource_resource + WHERE (user_id= %s)))"""%(uid, uid)) res = cr.fetchall() - res = [(str(r['id']),r['name']) for r in res] + res = [(str(r[0]),r[1]) for r in res] return res class users(osv.osv): @@ -605,7 +607,6 @@ class users(osv.osv): _columns = { 'context_project_id': fields.selection(_project_get, 'Project'), } - users() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: -- 1.7.10.4