[FIX]ir_property: If we add a property on a many2one field with multicompany the value of main company is replaced in all companies value

bzr revid: ado@tinyerp.com-20130527114601-tqzlrna1n9jssou2
This commit is contained in:
Amit Dodiya 2013-05-27 17:16:01 +05:30
commit b7e1be5539
1 changed files with 7 additions and 8 deletions

View File

@ -1379,21 +1379,24 @@ class property(function):
res[prop_name] = prop.get(cr, uid, prop_name, obj._name, context=context)
return res
def _get_by_id(self, obj, cr, uid, prop_name, ids, context=None):
def _get_by_id(self, obj, cr, uid, prop_name, ids, context=None, company_id=False):
prop = obj.pool.get('ir.property')
vids = [obj._name + ',' + str(oid) for oid in ids]
domain = [('fields_id.model', '=', obj._name), ('fields_id.name', 'in', prop_name)]
domain = [('fields_id.model', '=', obj._name), ('fields_id.name', 'in', prop_name), ('company_id','=',company_id)]
#domain = prop._get_domain(cr, uid, prop_name, obj._name, context)
if vids:
domain = [('res_id', 'in', vids)] + domain
return prop.search(cr, uid, domain, context=context)
# TODO: to rewrite more clean
def _fnct_write(self, obj, cr, uid, id, prop_name, id_val, obj_dest, context=None):
if context is None:
context = {}
def_id = self._field_get(cr, uid, obj._name, prop_name)
company = obj.pool.get('res.company')
cid = company._company_default_get(cr, uid, obj._name, def_id,
context=context)
nids = self._get_by_id(obj, cr, uid, [prop_name], [id], context)
if nids:
cr.execute('DELETE FROM ir_property WHERE id IN %s', (tuple(nids),))
@ -1408,10 +1411,6 @@ class property(function):
property_create = True
if property_create:
def_id = self._field_get(cr, uid, obj._name, prop_name)
company = obj.pool.get('res.company')
cid = company._company_default_get(cr, uid, obj._name, def_id,
context=context)
propdef = obj.pool.get('ir.model.fields').browse(cr, uid, def_id,
context=context)
prop = obj.pool.get('ir.property')
@ -1423,7 +1422,7 @@ class property(function):
'fields_id': def_id,
'type': self._type,
}, context=context)
return False
return False
def _fnct_read(self, obj, cr, uid, ids, prop_names, obj_dest, context=None):
prop = obj.pool.get('ir.property')