# -*- encoding: utf-8 -*- ############################################################################## # # Copyright (c) 2004-2008 TINY SPRL. (http://tiny.be) All Rights Reserved. # # $Id$ # # WARNING: This program as such is intended to be used by professional # programmers who take the whole responsability of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial # garantees and support are strongly adviced to contract a Free Software # Service Company # # This program is Free Software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################## import wizard import pooler import os import tools view_form_end = """
""" view_form = """ """ view_field = { "module_info": {'type': 'text', 'string': 'Modules to update', 'readonly': True}, "module_download": {'type': 'text', 'string': 'Modules to download', 'readonly': True}, } class wizard_info_get(wizard.interface): def _get_install(self, cr, uid, data, context): pool=pooler.get_pool(cr.dbname) mod_obj = pool.get('ir.module.module') ids = mod_obj.search(cr, uid, [ ('state', 'in', ['to upgrade', 'to remove', 'to install'])]) res = mod_obj.read(cr, uid, ids, ['name','state'], context) url = mod_obj.download(cr, uid, ids, download=False, context=context) return {'module_info': '\n'.join(map(lambda x: x['name']+' : '+x['state'], res)), 'module_download': '\n'.join(url)} def _check_upgrade_module(self,cr,uid,data,context): db, pool = pooler.get_db_and_pool(cr.dbname) cr = db.cursor() mod_obj = pool.get('ir.module.module') ids = mod_obj.search(cr, uid, [ ('state', 'in', ['to upgrade', 'to remove', 'to install'])]) if ids and len(ids): return 'next' else: return 'end' def _upgrade_module(self, cr, uid, data, context): db, pool = pooler.get_db_and_pool(cr.dbname) cr = db.cursor() mod_obj = pool.get('ir.module.module') ids = mod_obj.search(cr, uid, [ ('state', 'in', ['to upgrade', 'to remove', 'to install'])]) mod_obj.download(cr, uid, ids, context=context) cr.commit() db, pool = pooler.restart_pool(cr.dbname, update_module=True) lang_obj=pool.get('res.lang') lang_ids=lang_obj.search(cr, uid, []) langs=lang_obj.browse(cr, uid, lang_ids) for lang in langs: if lang.code and lang.code != 'en_US': filename=os.path.join(tools.config["root_path"], "i18n", lang.code + ".csv") tools.trans_load(cr.dbname, filename, lang.code) return {} def _config(self, cr, uid, data, context=None): return { 'view_type': 'form', "view_mode": 'form', 'res_model': 'ir.module.module.configuration.wizard', 'type': 'ir.actions.act_window', 'target':'new', } states = { 'init': { 'actions': [], 'result' : {'type': 'choice', 'next_state': _check_upgrade_module } }, 'next': { 'actions': [_get_install], 'result': {'type':'form', 'arch':view_form, 'fields': view_field, 'state':[ ('end', 'Cancel', 'gtk-cancel'), ('start', 'Start Upgrade', 'gtk-ok', True) ] } }, 'start': { 'actions': [_upgrade_module], 'result': {'type':'form', 'arch':view_form_end, 'fields': {}, 'state':[ ('end', 'Close', 'gtk-close', True), ('config', 'Start configuration', 'gtk-ok', True) ] } }, 'end': { 'actions': [], 'result': {'type':'form', 'arch':view_form_end, 'fields': {}, 'state':[ ('end', 'Close', 'gtk-close', True), ('config', 'Start configuration', 'gtk-ok', True) ] } }, 'config':{ 'result': { 'type': 'action', 'action': _config, 'state': 'end', }, } } wizard_info_get('module.upgrade') # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: