From 05613c2bea120b203e46378243ca6cc1e4ea5f16 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Thu, 27 Nov 2008 09:24:44 +0100 Subject: [PATCH] [FIX] Move the read_string and write_string methods from orm to orm_template lp bug: https://launchpad.net/bugs/300754 fixed bzr revid: stephane@tinyerp.com-20081127082444-rpa115twbkgy6oib --- bin/osv/orm.py | 82 +++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index 7fada153b64..e933464960a 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -1107,6 +1107,47 @@ class orm_template(object): def copy(self, cr, uid, id, default=None, context=None): raise _('The copy method is not implemented on this object !') + def read_string(self, cr, uid, id, langs, fields=None, context=None): + if not context: + context = {} + res = {} + res2 = {} + self.pool.get('ir.model.access').check(cr, uid, 'ir.translation', 'read') + if not fields: + fields = self._columns.keys() + self._inherit_fields.keys() + for lang in langs: + res[lang] = {'code': lang} + for f in fields: + if f in self._columns: + res_trans = self.pool.get('ir.translation')._get_source(cr, uid, self._name+','+f, 'field', lang) + if res_trans: + res[lang][f] = res_trans + else: + res[lang][f] = self._columns[f].string + for table in self._inherits: + cols = intersect(self._inherit_fields.keys(), fields) + res2 = self.pool.get(table).read_string(cr, uid, id, langs, cols, context) + for lang in res2: + if lang in res: + res[lang] = {'code': lang} + for f in res2[lang]: + res[lang][f] = res2[lang][f] + return res + + def write_string(self, cr, uid, id, langs, vals, context=None): + if not context: + context = {} + self.pool.get('ir.model.access').check(cr, uid, 'ir.translation', 'write') + for lang in langs: + for field in vals: + if field in self._columns: + self.pool.get('ir.translation')._set_ids(cr, uid, self._name+','+field, 'field', lang, [0], vals[field]) + for table in self._inherits: + cols = intersect(self._inherit_fields.keys(), vals) + if cols: + self.pool.get(table).write_string(cr, uid, id, langs, vals, context) + return True + class orm_memory(orm_template): _protected = ['read', 'write', 'create', 'default_get', 'perm_read', 'unlink', 'fields_get', 'fields_view_get', 'search', 'name_get', 'distinct_field_get', 'name_search', 'copy', 'import_data', 'search_count'] @@ -2543,47 +2584,6 @@ class orm(orm_template): return new_id - def read_string(self, cr, uid, id, langs, fields=None, context=None): - if not context: - context = {} - res = {} - res2 = {} - self.pool.get('ir.model.access').check(cr, uid, 'ir.translation', 'read') - if not fields: - fields = self._columns.keys() + self._inherit_fields.keys() - for lang in langs: - res[lang] = {'code': lang} - for f in fields: - if f in self._columns: - res_trans = self.pool.get('ir.translation')._get_source(cr, uid, self._name+','+f, 'field', lang) - if res_trans: - res[lang][f] = res_trans - else: - res[lang][f] = self._columns[f].string - for table in self._inherits: - cols = intersect(self._inherit_fields.keys(), fields) - res2 = self.pool.get(table).read_string(cr, uid, id, langs, cols, context) - for lang in res2: - if lang in res: - res[lang] = {'code': lang} - for f in res2[lang]: - res[lang][f] = res2[lang][f] - return res - - def write_string(self, cr, uid, id, langs, vals, context=None): - if not context: - context = {} - self.pool.get('ir.model.access').check(cr, uid, 'ir.translation', 'write') - for lang in langs: - for field in vals: - if field in self._columns: - self.pool.get('ir.translation')._set_ids(cr, uid, self._name+','+field, 'field', lang, [0], vals[field]) - for table in self._inherits: - cols = intersect(self._inherit_fields.keys(), vals) - if cols: - self.pool.get(table).write_string(cr, uid, id, langs, vals, context) - return True - def check_recursion(self, cr, uid, ids, parent=None): if not parent: parent = self._parent_name