From c2402b14a9011fc4d24557b270421d2f3ccb574c Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 5 Jan 2011 15:07:58 +0100 Subject: [PATCH] [IMP] trans_export/trans_load: passing a cursor around instead of a dbname. bzr revid: vmt@openerp.com-20110105140758-vgoufkd85v6ywrjk --- bin/addons/base/module/module.py | 4 ++-- .../module/wizard/base_import_language.py | 4 ++-- .../module/wizard/base_update_translations.py | 6 ++--- bin/openerp-server.py | 11 +++++++-- bin/tools/translate.py | 23 +++++++------------ 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index d90ef415951..3237da178cc 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -501,7 +501,7 @@ class module(osv.osv): f2 = addons.get_module_resource(mod.name, 'i18n', iso_lang2 + '.po') if f2: logger.info('module %s: loading base translation file %s for language %s', mod.name, iso_lang2, lang) - tools.trans_load(cr.dbname, f2, lang, verbose=False, context=context) + tools.trans_load(cr, f2, lang, verbose=False, context=context) context2['overwrite'] = True # Implementation notice: we must first search for the full name of # the language derivative, like "en_UK", and then the generic, @@ -511,7 +511,7 @@ class module(osv.osv): f = addons.get_module_resource(mod.name, 'i18n', iso_lang + '.po') if f: logger.info('module %s: loading translation file (%s) for language %s', mod.name, iso_lang, lang) - tools.trans_load(cr.dbname, f, lang, verbose=False, context=context2) + tools.trans_load(cr, f, lang, verbose=False, context=context2) elif iso_lang != 'en': logger.warning('module %s: no translation for language %s', mod.name, iso_lang) diff --git a/bin/addons/base/module/wizard/base_import_language.py b/bin/addons/base/module/wizard/base_import_language.py index 6608ade03ef..96dcd1df794 100644 --- a/bin/addons/base/module/wizard/base_import_language.py +++ b/bin/addons/base/module/wizard/base_import_language.py @@ -56,8 +56,8 @@ class base_language_import(osv.osv_memory): fileformat = first_line.endswith("type,name,res_id,src,value") and 'csv' or 'po' fileobj.seek(0) - tools.trans_load_data(cr.dbname, fileobj, fileformat, import_data.code, lang_name=import_data.name) + tools.trans_load_data(cr, fileobj, fileformat, import_data.code, lang_name=import_data.name) fileobj.close() return {} -base_language_import() \ No newline at end of file +base_language_import() diff --git a/bin/addons/base/module/wizard/base_update_translations.py b/bin/addons/base/module/wizard/base_update_translations.py index 6b329cf1212..f79f4c0f1fa 100644 --- a/bin/addons/base/module/wizard/base_update_translations.py +++ b/bin/addons/base/module/wizard/base_update_translations.py @@ -45,8 +45,8 @@ class base_update_translations(osv.osv_memory): this = self.browse(cr, uid, ids)[0] lang_name = self._get_lang_name(cr, uid, this.lang) buf=cStringIO.StringIO() - tools.trans_export(this.lang, ['all'], buf, 'csv', dbname=cr.dbname) - tools.trans_load_data(cr.dbname, buf, 'csv', this.lang, lang_name=lang_name) + tools.trans_export(this.lang, ['all'], buf, 'csv', cr) + tools.trans_load_data(cr, buf, 'csv', this.lang, lang_name=lang_name) buf.close() return {'type': 'ir.actions.act_window_close'} @@ -70,4 +70,4 @@ class base_update_translations(osv.osv_memory): 'lang': fields.selection(_get_languages, 'Language', required=True), } -base_update_translations() \ No newline at end of file +base_update_translations() diff --git a/bin/openerp-server.py b/bin/openerp-server.py index 5c67c879d84..3ffa2a3e7d3 100755 --- a/bin/openerp-server.py +++ b/bin/openerp-server.py @@ -144,7 +144,10 @@ if tools.config["translate_out"]: fileformat = os.path.splitext(tools.config["translate_out"])[-1][1:].lower() buf = file(tools.config["translate_out"], "w") - tools.trans_export(tools.config["language"], tools.config["translate_modules"], buf, fileformat) + dbname = tools.config['db_name'] + cr = pooler.get_db(dbname).cursor() + tools.trans_export(tools.config["language"], tools.config["translate_modules"] or ["all"], buf, fileformat, cr) + cr.close() buf.close() logger.info('translation file written successfully') @@ -152,10 +155,14 @@ if tools.config["translate_out"]: if tools.config["translate_in"]: context = {'overwrite': tools.config["overwrite_existing_translations"]} - tools.trans_load(tools.config["db_name"], + dbname = tools.config['db_name'] + cr = pooler.get_db(dbname).cursor() + tools.trans_load(cr, tools.config["translate_in"], tools.config["language"], context=context) + cr.commit() + cr.close() sys.exit(0) #---------------------------------------------------------------------------------- diff --git a/bin/tools/translate.py b/bin/tools/translate.py index c1c09140d0a..bc1ee121b91 100644 --- a/bin/tools/translate.py +++ b/bin/tools/translate.py @@ -409,7 +409,7 @@ class TinyPoFile(object): # Methods to export the translation file -def trans_export(lang, modules, buffer, format, dbname=None): +def trans_export(lang, modules, buffer, format, cr): def _process(format, modules, rows, buffer, lang, newlang): if format == 'csv': @@ -461,7 +461,7 @@ def trans_export(lang, modules, buffer, format, dbname=None): newlang = not bool(lang) if newlang: lang = 'en_US' - trans = trans_generate(lang, modules, dbname) + trans = trans_generate(lang, modules, cr) if newlang and format!='csv': for trx in trans: trx[-1] = '' @@ -524,17 +524,13 @@ def in_modules(object_name, modules): module = module_dict.get(module, module) return module in modules -def trans_generate(lang, modules, dbname=None): +def trans_generate(lang, modules, cr): logger = logging.getLogger('i18n') - if not dbname: - dbname=tools.config['db_name'] - if not modules: - modules = ['all'] + dbname = cr.dbname pool = pooler.get_pool(dbname) trans_obj = pool.get('ir.translation') model_data_obj = pool.get('ir.model.data') - cr = pooler.get_db(dbname).cursor() uid = 1 l = pool.obj_pool.items() l.sort() @@ -834,16 +830,15 @@ def trans_generate(lang, modules, dbname=None): trans = trans_obj._get_source(cr, uid, name, type, lang, source) out.append([module, type, name, id, source, encode(trans) or '']) - cr.close() return out -def trans_load(db_name, filename, lang, verbose=True, context=None): +def trans_load(cr, filename, lang, verbose=True, context=None): logger = logging.getLogger('i18n') try: fileobj = open(filename,'r') logger.info("loading %s", filename) fileformat = os.path.splitext(filename)[-1][1:].lower() - r = trans_load_data(db_name, fileobj, fileformat, lang, verbose=verbose, context=context) + r = trans_load_data(cr, fileobj, fileformat, lang, verbose=verbose, context=context) fileobj.close() return r except IOError: @@ -851,12 +846,13 @@ def trans_load(db_name, filename, lang, verbose=True, context=None): logger.error("couldn't read translation file %s", filename) return None -def trans_load_data(db_name, fileobj, fileformat, lang, lang_name=None, verbose=True, context=None): +def trans_load_data(cr, fileobj, fileformat, lang, lang_name=None, verbose=True, context=None): logger = logging.getLogger('i18n') if verbose: logger.info('loading translation file for language %s', lang) if context is None: context = {} + db_name = cr.dbname pool = pooler.get_pool(db_name) lang_obj = pool.get('res.lang') trans_obj = pool.get('ir.translation') @@ -864,7 +860,6 @@ def trans_load_data(db_name, fileobj, fileformat, lang, lang_name=None, verbose= iso_lang = tools.get_iso_codes(lang) try: uid = 1 - cr = pooler.get_db(db_name).cursor() ids = lang_obj.search(cr, uid, [('code','=', lang)]) if not ids: @@ -967,8 +962,6 @@ def trans_load_data(db_name, fileobj, fileformat, lang, lang_name=None, verbose= trans_obj.write(cr, uid, ids, {'value': dic['value']}) else: trans_obj.create(cr, uid, dic) - cr.commit() - cr.close() if verbose: logger.info("translation file loaded succesfully") except IOError: