[IMP]: improved the code, added model_id_get() to support ref attribute for reference fields
bzr revid: rvo@tinyerp.co.in-20100429055448-ozeuc3ssv6mtpqiy
This commit is contained in:
parent
a076f056f1
commit
e6131ae55e
|
@ -357,7 +357,7 @@
|
|||
<record id="res_partner_asustek_request" model="res.request">
|
||||
<field name="name">ASUSTEK-Subject</field>
|
||||
<field name="act_to" ref="user_demo"/>
|
||||
<field name="ref_doc1" ref="res_partner_asus"/>
|
||||
<field name="ref_doc1" ref="base.res_partner_asus"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -720,11 +720,12 @@ form: module.record_id""" % (xml_id,)
|
|||
if f_ref=="null":
|
||||
f_val = False
|
||||
else:
|
||||
f_val = self.id_get(cr, f_model, f_ref)
|
||||
if f_name in model._columns \
|
||||
and model._columns[f_name]._type == 'reference':
|
||||
model_name = self.model_get(cr, f_ref)
|
||||
f_val = model_name + ',' + str(f_val)
|
||||
val = self.model_id_get(cr, f_model, f_ref)
|
||||
f_val = val[0] + ',' + str(val[1])
|
||||
else:
|
||||
f_val = self.id_get(cr, f_model, f_ref)
|
||||
else:
|
||||
f_val = _eval_xml(self,field, self.pool, cr, self.uid, self.idref)
|
||||
if model._columns.has_key(f_name):
|
||||
|
@ -740,23 +741,19 @@ form: module.record_id""" % (xml_id,)
|
|||
return rec_model, id
|
||||
|
||||
def id_get(self, cr, model, id_str):
|
||||
return self.model_id_get(cr, model, id_str)[1]
|
||||
|
||||
def model_id_get(self, cr, model, id_str):
|
||||
if id_str in self.idref:
|
||||
return self.idref[id_str]
|
||||
return '', self.idref[id_str]
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
mod = self.module
|
||||
if '.' in id_str:
|
||||
mod,id_str = id_str.split('.')
|
||||
result = self.pool.get('ir.model.data')._get_id(cr, self.uid, mod, id_str)
|
||||
res = self.pool.get('ir.model.data').read(cr, self.uid, [result], ['res_id'])
|
||||
result = model_data_obj._get_id(cr, self.uid, mod, id_str)
|
||||
res = model_data_obj.read(cr, self.uid, [result], ['model', 'res_id'])
|
||||
if res and res[0] and res[0]['res_id']:
|
||||
return int(res[0]['res_id'])
|
||||
return False
|
||||
|
||||
def model_get(self, cr, id_str):
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
id = model_data_obj.search(cr, self.uid, [('name', '=', id_str)])
|
||||
res = model_data_obj.read(cr, self.uid, id, ['model'])
|
||||
if res and res[0] and res[0]['model']:
|
||||
return res[0]['model']
|
||||
return res[0]['model'], int(res[0]['res_id'])
|
||||
return False
|
||||
|
||||
def parse(self, de):
|
||||
|
|
Loading…
Reference in New Issue