From 910bb4d24e77638a73cbd369f81966bf22dc2e15 Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Tue, 23 Oct 2012 14:15:01 +0200 Subject: [FIX] only fetch the analytic accounts that the current user has the right to read, avoiding an access error when calling name_get() lp bug: https://launchpad.net/bugs/1033505 fixed bzr revid: abo@openerp.com-20121023121501-gl0wfhdo9zp34wx2 --- addons/analytic/analytic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addons/analytic/analytic.py') diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 1ce483a26cd..21e2d4156fe 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -255,8 +255,8 @@ class account_analytic_account(osv.osv): if context is None: context={} if context.get('current_model') == 'project.project': - cr.execute("select analytic_account_id from project_project") - project_ids = [x[0] for x in cr.fetchall()] + project_obj = self.pool.get("account.analytic.account") + project_ids = project_obj.search(cr, uid, args) return self.name_get(cr, uid, project_ids, context=context) if name: account = self.search(cr, uid, [('code', '=', name)] + args, limit=limit, context=context) -- cgit v1.2.3 From cb713061b57d45162591b979f192994f0a3ce3cf Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Tue, 23 Oct 2012 14:38:14 +0200 Subject: [IMP] var names bzr revid: abo@openerp.com-20121023123814-wbdrf146em3d39pe --- addons/analytic/analytic.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'addons/analytic/analytic.py') diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 21e2d4156fe..5ea8c59b848 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -259,23 +259,23 @@ class account_analytic_account(osv.osv): project_ids = project_obj.search(cr, uid, args) return self.name_get(cr, uid, project_ids, context=context) if name: - account = self.search(cr, uid, [('code', '=', name)] + args, limit=limit, context=context) - if not account: + account_ids = self.search(cr, uid, [('code', '=', name)] + args, limit=limit, context=context) + if not account_ids: names=map(lambda i : i.strip(),name.split('/')) for i in range(len(names)): dom=[('name', operator, names[i])] if i>0: - dom+=[('id','child_of',account)] - account = self.search(cr, uid, dom, limit=limit, context=context) - newacc = account + dom+=[('id','child_of',account_ids)] + account_ids = self.search(cr, uid, dom, limit=limit, context=context) + newacc = account_ids while newacc: newacc = self.search(cr, uid, [('parent_id', 'in', newacc)], limit=limit, context=context) - account += newacc + account_ids += newacc if args: - account = self.search(cr, uid, [('id', 'in', account)] + args, limit=limit, context=context) + account_ids = self.search(cr, uid, [('id', 'in', account_ids)] + args, limit=limit, context=context) else: - account = self.search(cr, uid, args, limit=limit, context=context) - return self.name_get(cr, uid, account, context=context) + account_ids = self.search(cr, uid, args, limit=limit, context=context) + return self.name_get(cr, uid, account_ids, context=context) def create(self, cr, uid, vals, context=None): contract = super(account_analytic_account, self).create(cr, uid, vals, context=context) -- cgit v1.2.3