From a076f056f1013e9b325deccca02e85313d04d83e Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Mon, 26 Apr 2010 10:53:45 +0530 Subject: [PATCH 1/3] [ADD]:ref attribute support in demo files for reference fields bzr revid: rvo@tinyerp.co.in-20100426052345-s351m4qjr717o3m0 --- bin/addons/base/res/partner/partner_demo.xml | 2 +- bin/tools/convert.py | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/bin/addons/base/res/partner/partner_demo.xml b/bin/addons/base/res/partner/partner_demo.xml index c6de312bc4c..f5d70a2490d 100644 --- a/bin/addons/base/res/partner/partner_demo.xml +++ b/bin/addons/base/res/partner/partner_demo.xml @@ -357,7 +357,7 @@ ASUSTEK-Subject - res.partner,2 + diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 36f2740dbc9..4a2a879698a 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## @@ -369,10 +369,10 @@ form: module.record_id""" % (xml_id,) domain = rec.get('domain','').encode('utf-8') or '{}' context = rec.get('context','').encode('utf-8') or '{}' res_model = rec.get('res_model','').encode('utf-8') - src_model = rec.get('src_model','').encode('utf-8') + src_model = rec.get('src_model','').encode('utf-8') view_type = rec.get('view_type','').encode('utf-8') or 'form' view_mode = rec.get('view_mode','').encode('utf-8') or 'tree,form' - + usage = rec.get('usage','').encode('utf-8') limit = rec.get('limit','').encode('utf-8') auto_refresh = rec.get('auto_refresh','').encode('utf-8') @@ -721,6 +721,10 @@ form: module.record_id""" % (xml_id,) 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) else: f_val = _eval_xml(self,field, self.pool, cr, self.uid, self.idref) if model._columns.has_key(f_name): @@ -747,6 +751,14 @@ form: module.record_id""" % (xml_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 False + def parse(self, de): if not de.tag in ['terp', 'openerp']: self.logger.notifyChannel("init", netsvc.LOG_ERROR, "Mismatch xml format" ) From e6131ae55e4f5deb3231e99a0f1e19a22b76d1c1 Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Thu, 29 Apr 2010 11:24:48 +0530 Subject: [PATCH 2/3] [IMP]: improved the code, added model_id_get() to support ref attribute for reference fields bzr revid: rvo@tinyerp.co.in-20100429055448-ozeuc3ssv6mtpqiy --- bin/addons/base/res/partner/partner_demo.xml | 2 +- bin/tools/convert.py | 27 +++++++++----------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/bin/addons/base/res/partner/partner_demo.xml b/bin/addons/base/res/partner/partner_demo.xml index f5d70a2490d..86b665c396b 100644 --- a/bin/addons/base/res/partner/partner_demo.xml +++ b/bin/addons/base/res/partner/partner_demo.xml @@ -357,7 +357,7 @@ ASUSTEK-Subject - + diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 4a2a879698a..5ad184d6b19 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -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): From 5d1e3ffb3fa184963bd7ca1c7983d1c47bd345f3 Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Tue, 4 May 2010 14:21:28 +0530 Subject: [PATCH 3/3] [IMP]:improved code to allow ref=res_partner_asus with ref=base.res_partner_asus bzr revid: rvo@tinyerp.co.in-20100504085128-4hgjn365kjhryat5 --- bin/addons/base/res/partner/partner_demo.xml | 2 +- bin/tools/convert.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/addons/base/res/partner/partner_demo.xml b/bin/addons/base/res/partner/partner_demo.xml index 86b665c396b..f5d70a2490d 100644 --- a/bin/addons/base/res/partner/partner_demo.xml +++ b/bin/addons/base/res/partner/partner_demo.xml @@ -357,7 +357,7 @@ ASUSTEK-Subject - + diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 5ad184d6b19..df56bd7154a 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -741,11 +741,11 @@ form: module.record_id""" % (xml_id,) return rec_model, id def id_get(self, cr, model, id_str): + if id_str in self.idref: + return self.idref[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] model_data_obj = self.pool.get('ir.model.data') mod = self.module if '.' in id_str: