diff options
| author | Numerigraphe - Lionel Sausin <ls@numerigraphe.fr> | 2010-11-12 15:10:41 +0100 |
|---|---|---|
| committer | Numerigraphe - Lionel Sausin <ls@numerigraphe.fr> | 2010-11-12 15:10:41 +0100 |
| commit | 182cf2b196da0d1f55ddfdcff62058b423e1bbc0 (patch) | |
| tree | 779b50e2e54b1624ba669b4a3f56bb6407c08d49 /bin/addons/base/module/wizard/base_export_language.py | |
| parent | e013734045bbaae906748a8026455bac6786568e (diff) | |
| parent | cc0d270bab0d0b7862430c3e527f7edc02d1d587 (diff) | |
[MERGE] sync with the trunk
bzr revid: ls@numerigraphe.fr-20101112141041-19kpvr7pzxqankqo
Diffstat (limited to 'bin/addons/base/module/wizard/base_export_language.py')
| -rw-r--r-- | bin/addons/base/module/wizard/base_export_language.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/bin/addons/base/module/wizard/base_export_language.py b/bin/addons/base/module/wizard/base_export_language.py new file mode 100644 index 00000000000..1b43b561ac3 --- /dev/null +++ b/bin/addons/base/module/wizard/base_export_language.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# 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 <http://www.gnu.org/licenses/>. +# +############################################################################## + +import tools +import base64 +import cStringIO +import pooler +from osv import fields,osv +from tools.translate import _ +from tools.misc import get_iso_codes + +class base_language_export(osv.osv_memory): + + def _get_languages(self, cr, uid, context): + lang_obj=pooler.get_pool(cr.dbname).get('res.lang') + ids=lang_obj.search(cr, uid, ['&', ('active', '=', True), ('translatable', '=', True),]) + langs=lang_obj.browse(cr, uid, ids) + return [(lang.code, lang.name) for lang in langs] + + def act_cancel(self, cr, uid, ids, context=None): + #self.unlink(cr, uid, ids, context) + return {'type':'ir.actions.act_window_close' } + + def act_destroy(self, *args): + return {'type':'ir.actions.act_window_close' } + + def act_getfile(self, cr, uid, ids, context=None): + this = self.browse(cr, uid, ids)[0] + mods = map(lambda m: m.name, this.modules) or ['all'] + mods.sort() + buf=cStringIO.StringIO() + tools.trans_export(this.lang, mods, buf, this.format, dbname=cr.dbname) + if this.format == 'csv': + this.advice = _("Save this document to a .CSV file and open it with your favourite spreadsheet software. The file encoding is UTF-8. You have to translate the latest column before reimporting it.") + elif this.format == 'po': + if not this.lang: + this.format = 'pot' + this.advice = _("Save this document to a %s file and edit it with a specific software or a text editor. The file encoding is UTF-8.") % ('.'+this.format,) + elif this.format == 'tgz': + ext = this.lang and '.po' or '.pot' + this.advice = _('Save this document to a .tgz file. This archive containt UTF-8 %s files and may be uploaded to launchpad.') % (ext,) + filename = _('new') + if not this.lang and len(mods) == 1: + filename = mods[0] + if this.lang: + filename = get_iso_codes(this.lang) + this.name = "%s.%s" % (filename, this.format) + out=base64.encodestring(buf.getvalue()) + buf.close() + return self.write(cr, uid, ids, {'state':'get', 'data':out, 'advice':this.advice, 'name':this.name}, context=context) + + _name = "base.language.export" + _inherit = "ir.wizard.screen" + _columns = { + 'name': fields.char('Filename', 16, readonly=True), + 'lang': fields.selection(_get_languages, 'Language', help='To export a new language, do not select a language.'), # not required: unset = new language + 'format': fields.selection( ( ('csv','CSV File'), ('po','PO File'), ('tgz', 'TGZ Archive')), 'File Format', required=True), + 'modules': fields.many2many('ir.module.module', 'rel_modules_langexport', 'wiz_id', 'module_id', 'Modules', domain=[('state','=','installed')]), + 'data': fields.binary('File', readonly=True), + 'advice': fields.text('Advice', readonly=True), + 'state': fields.selection( ( ('choose','choose'), # choose language + ('get','get'), # get the file + ) ), + } + _defaults = { + 'state': lambda *a: 'choose', + 'name': lambda *a: 'lang.tar.gz' + } +base_language_export() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file |
