[IMP] trans_export/trans_load: passing a cursor around instead of a dbname.

bzr revid: vmt@openerp.com-20110105140758-vgoufkd85v6ywrjk
This commit is contained in:
Vo Minh Thu 2011-01-05 15:07:58 +01:00
parent fc20503f95
commit c2402b14a9
5 changed files with 24 additions and 24 deletions

View File

@ -501,7 +501,7 @@ class module(osv.osv):
f2 = addons.get_module_resource(mod.name, 'i18n', iso_lang2 + '.po') f2 = addons.get_module_resource(mod.name, 'i18n', iso_lang2 + '.po')
if f2: if f2:
logger.info('module %s: loading base translation file %s for language %s', mod.name, iso_lang2, lang) 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 context2['overwrite'] = True
# Implementation notice: we must first search for the full name of # Implementation notice: we must first search for the full name of
# the language derivative, like "en_UK", and then the generic, # 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') f = addons.get_module_resource(mod.name, 'i18n', iso_lang + '.po')
if f: if f:
logger.info('module %s: loading translation file (%s) for language %s', mod.name, iso_lang, lang) 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': elif iso_lang != 'en':
logger.warning('module %s: no translation for language %s', mod.name, iso_lang) logger.warning('module %s: no translation for language %s', mod.name, iso_lang)

View File

@ -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' fileformat = first_line.endswith("type,name,res_id,src,value") and 'csv' or 'po'
fileobj.seek(0) 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() fileobj.close()
return {} return {}
base_language_import() base_language_import()

View File

@ -45,8 +45,8 @@ class base_update_translations(osv.osv_memory):
this = self.browse(cr, uid, ids)[0] this = self.browse(cr, uid, ids)[0]
lang_name = self._get_lang_name(cr, uid, this.lang) lang_name = self._get_lang_name(cr, uid, this.lang)
buf=cStringIO.StringIO() buf=cStringIO.StringIO()
tools.trans_export(this.lang, ['all'], buf, 'csv', dbname=cr.dbname) tools.trans_export(this.lang, ['all'], buf, 'csv', cr)
tools.trans_load_data(cr.dbname, buf, 'csv', this.lang, lang_name=lang_name) tools.trans_load_data(cr, buf, 'csv', this.lang, lang_name=lang_name)
buf.close() buf.close()
return {'type': 'ir.actions.act_window_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), 'lang': fields.selection(_get_languages, 'Language', required=True),
} }
base_update_translations() base_update_translations()

View File

@ -144,7 +144,10 @@ if tools.config["translate_out"]:
fileformat = os.path.splitext(tools.config["translate_out"])[-1][1:].lower() fileformat = os.path.splitext(tools.config["translate_out"])[-1][1:].lower()
buf = file(tools.config["translate_out"], "w") 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() buf.close()
logger.info('translation file written successfully') logger.info('translation file written successfully')
@ -152,10 +155,14 @@ if tools.config["translate_out"]:
if tools.config["translate_in"]: if tools.config["translate_in"]:
context = {'overwrite': tools.config["overwrite_existing_translations"]} 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["translate_in"],
tools.config["language"], tools.config["language"],
context=context) context=context)
cr.commit()
cr.close()
sys.exit(0) sys.exit(0)
#---------------------------------------------------------------------------------- #----------------------------------------------------------------------------------

View File

@ -409,7 +409,7 @@ class TinyPoFile(object):
# Methods to export the translation file # 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): def _process(format, modules, rows, buffer, lang, newlang):
if format == 'csv': if format == 'csv':
@ -461,7 +461,7 @@ def trans_export(lang, modules, buffer, format, dbname=None):
newlang = not bool(lang) newlang = not bool(lang)
if newlang: if newlang:
lang = 'en_US' lang = 'en_US'
trans = trans_generate(lang, modules, dbname) trans = trans_generate(lang, modules, cr)
if newlang and format!='csv': if newlang and format!='csv':
for trx in trans: for trx in trans:
trx[-1] = '' trx[-1] = ''
@ -524,17 +524,13 @@ def in_modules(object_name, modules):
module = module_dict.get(module, module) module = module_dict.get(module, module)
return module in modules return module in modules
def trans_generate(lang, modules, dbname=None): def trans_generate(lang, modules, cr):
logger = logging.getLogger('i18n') logger = logging.getLogger('i18n')
if not dbname: dbname = cr.dbname
dbname=tools.config['db_name']
if not modules:
modules = ['all']
pool = pooler.get_pool(dbname) pool = pooler.get_pool(dbname)
trans_obj = pool.get('ir.translation') trans_obj = pool.get('ir.translation')
model_data_obj = pool.get('ir.model.data') model_data_obj = pool.get('ir.model.data')
cr = pooler.get_db(dbname).cursor()
uid = 1 uid = 1
l = pool.obj_pool.items() l = pool.obj_pool.items()
l.sort() l.sort()
@ -834,16 +830,15 @@ def trans_generate(lang, modules, dbname=None):
trans = trans_obj._get_source(cr, uid, name, type, lang, source) trans = trans_obj._get_source(cr, uid, name, type, lang, source)
out.append([module, type, name, id, source, encode(trans) or '']) out.append([module, type, name, id, source, encode(trans) or ''])
cr.close()
return out 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') logger = logging.getLogger('i18n')
try: try:
fileobj = open(filename,'r') fileobj = open(filename,'r')
logger.info("loading %s", filename) logger.info("loading %s", filename)
fileformat = os.path.splitext(filename)[-1][1:].lower() 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() fileobj.close()
return r return r
except IOError: 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) logger.error("couldn't read translation file %s", filename)
return None 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') logger = logging.getLogger('i18n')
if verbose: if verbose:
logger.info('loading translation file for language %s', lang) logger.info('loading translation file for language %s', lang)
if context is None: if context is None:
context = {} context = {}
db_name = cr.dbname
pool = pooler.get_pool(db_name) pool = pooler.get_pool(db_name)
lang_obj = pool.get('res.lang') lang_obj = pool.get('res.lang')
trans_obj = pool.get('ir.translation') 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) iso_lang = tools.get_iso_codes(lang)
try: try:
uid = 1 uid = 1
cr = pooler.get_db(db_name).cursor()
ids = lang_obj.search(cr, uid, [('code','=', lang)]) ids = lang_obj.search(cr, uid, [('code','=', lang)])
if not ids: 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']}) trans_obj.write(cr, uid, ids, {'value': dic['value']})
else: else:
trans_obj.create(cr, uid, dic) trans_obj.create(cr, uid, dic)
cr.commit()
cr.close()
if verbose: if verbose:
logger.info("translation file loaded succesfully") logger.info("translation file loaded succesfully")
except IOError: except IOError: