From ddadb2ce75c50a41ecf717b929eda8714d5f9d9d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 31 Aug 2011 11:45:47 +0200 Subject: [PATCH] [FIX] issue in splitting field paths for export: would create empty path sections because too eager do replacement in two passes of re-base replacement: replace old-style 'field:id' and 'field.id' in resp. 'field/id' and 'field/.id', don't touch anything else (especially not 'field/.id') and leave them through instead. bzr revid: xmo@openerp.com-20110831094547-8evd7ecm5qojspnr --- openerp/osv/orm.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 4b0e99477d5..b87672c012d 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -984,9 +984,10 @@ class orm_template(object): cols = self._columns.copy() for f in self._inherit_fields: cols.update({f: self._inherit_fields[f][2]}) - def fsplit(x): - if x=='.id': return [x] - return x.replace(':id','/id').replace('.id','/.id').split('/') + def fsplit(fieldname): + fixed_db_id = re.sub(r'([^/])\.id', r'\1/.id', fieldname) + fixed_external_id = re.sub(r'([^/]):id', r'\1/id', fixed_db_id) + return fixed_external_id.split('/') fields_to_export = map(fsplit, fields_to_export) datas = [] for row in self.browse(cr, uid, ids, context):