From 7ecc3850d9c1edd6017fe0d83320626458751cf2 Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Wed, 4 Jul 2012 14:57:41 +0200 Subject: [PATCH] [FIX] read companies addresses using openerp.SUPERUSER_ID instead of uid this will avoid users who don't have the right to read partners getting an error while reading companies e.g.: portal users, who can only read their own partner bzr revid: abo@openerp.com-20120704125741-y01o0xi0meflkp8v --- openerp/addons/base/res/res_company.py | 27 +++++++++++++------------- openerp/addons/base/res/res_partner.py | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 2454f342436..0d20c646114 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -23,6 +23,7 @@ from osv import osv from osv import fields import os import tools +import openerp from tools.translate import _ from tools.safe_eval import safe_eval as eval @@ -80,9 +81,9 @@ class res_company(osv.osv): for company in self.browse(cr, uid, ids, context=context): result[company.id] = {}.fromkeys(field_names, False) if company.partner_id: - address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default']) + address_data = part_obj.address_get(cr, openerp.SUPERUSER_ID, [company.partner_id.id], adr_pref=['default']) if address_data['default']: - address = part_obj.read(cr, uid, address_data['default'], field_names, context=context) + address = part_obj.read(cr, openerp.SUPERUSER_ID, address_data['default'], field_names, context=context) for field in field_names: result[company.id][field] = address[field] or False return result @@ -118,18 +119,18 @@ class res_company(osv.osv): 'currency_ids': fields.one2many('res.currency', 'company_id', 'Currency'), 'user_ids': fields.many2many('res.users', 'res_company_users_rel', 'cid', 'user_id', 'Accepted Users'), 'account_no':fields.char('Account No.', size=64), - 'street': fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', string="Street", multi='address'), - 'street2': fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', string="Street2", multi='address'), - 'zip': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="Zip", multi='address'), - 'city': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="City", multi='address'), - 'state_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', domain="[('country_id', '=', country_id)]", relation='res.country.state', string="Fed. State", multi='address'), + 'street': fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', string="Street", multi='address'), + 'street2': fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', string="Street2", multi='address'), + 'zip': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="Zip", multi='address'), + 'city': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="City", multi='address'), + 'state_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', domain="[('country_id', '=', country_id)]", relation='res.country.state', string="Fed. State", multi='address'), 'bank_ids': fields.one2many('res.partner.bank','company_id', 'Bank Accounts', help='Bank accounts related to this company'), - 'country_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country', string="Country", multi='address'), - 'email': fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', string="Email", multi='address'), - 'phone': fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', string="Phone", multi='address'), - 'fax': fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', string="Fax", multi='address'), - 'website': fields.related('partner_id', 'website', string="Website", type="char", size=64), - 'vat': fields.related('partner_id', 'vat', string="Tax ID", type="char", size=32), + 'country_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country', string="Country", multi='address'), + 'email': fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', string="Email", multi='address'), + 'phone': fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', string="Phone", multi='address'), + 'fax': fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', string="Fax", multi='address'), + 'website': fields.related('partner_id', 'website', string="Website", type="char", size=64), + 'vat': fields.related('partner_id', 'vat', string="Tax ID", type="char", size=32), 'company_registry': fields.char('Company Registry', size=64), 'paper_format': fields.selection([('a4', 'A4'), ('us_letter', 'US Letter')], "Paper Format", required=True), } diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 9a3661dde0e..2165c8ad16d 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -311,7 +311,7 @@ class res_partner(osv.osv): query_args = [name2] if limit: limit_str = ' limit %s' - query_args += [limit] + query_args += [limit] cr.execute('''SELECT partner.id FROM res_partner partner LEFT JOIN res_partner company ON partner.parent_id = company.id WHERE partner.name || ' (' || COALESCE(company.name,'') || ')'