summaryrefslogtreecommitdiff
path: root/bin/addons/base/module/wizard
diff options
context:
space:
mode:
authorNumerigraphe - Lionel Sausin <ls@numerigraphe.fr>2010-11-12 15:10:41 +0100
committerNumerigraphe - Lionel Sausin <ls@numerigraphe.fr>2010-11-12 15:10:41 +0100
commit182cf2b196da0d1f55ddfdcff62058b423e1bbc0 (patch)
tree779b50e2e54b1624ba669b4a3f56bb6407c08d49 /bin/addons/base/module/wizard
parente013734045bbaae906748a8026455bac6786568e (diff)
parentcc0d270bab0d0b7862430c3e527f7edc02d1d587 (diff)
[MERGE] sync with the trunk
bzr revid: ls@numerigraphe.fr-20101112141041-19kpvr7pzxqankqo
Diffstat (limited to 'bin/addons/base/module/wizard')
-rw-r--r--bin/addons/base/module/wizard/__init__.py21
-rw-r--r--bin/addons/base/module/wizard/base_export_language.py (renamed from bin/addons/base/module/wizard/wizard_export_lang.py)25
-rw-r--r--bin/addons/base/module/wizard/base_export_language_view.xml64
-rw-r--r--bin/addons/base/module/wizard/base_import_language.py63
-rw-r--r--bin/addons/base/module/wizard/base_import_language_view.xml57
-rw-r--r--bin/addons/base/module/wizard/base_language_install.py54
-rw-r--r--bin/addons/base/module/wizard/base_language_install_view.xml64
-rw-r--r--bin/addons/base/module/wizard/base_module_configuration.py52
-rw-r--r--bin/addons/base/module/wizard/base_module_configuration_view.xml49
-rw-r--r--bin/addons/base/module/wizard/base_module_import.py87
-rw-r--r--bin/addons/base/module/wizard/base_module_import_view.xml66
-rw-r--r--bin/addons/base/module/wizard/base_module_scan.py (renamed from bin/addons/base/module/wizard/add_new.py)45
-rw-r--r--bin/addons/base/module/wizard/base_module_scan_view.xml34
-rw-r--r--bin/addons/base/module/wizard/base_module_update.py61
-rw-r--r--bin/addons/base/module/wizard/base_module_update_view.xml66
-rw-r--r--bin/addons/base/module/wizard/base_module_upgrade.py118
-rw-r--r--bin/addons/base/module/wizard/base_module_upgrade_view.xml74
-rw-r--r--bin/addons/base/module/wizard/base_update_translations.py (renamed from bin/addons/base/module/wizard/wizard_update_translations.py)27
-rw-r--r--bin/addons/base/module/wizard/base_update_translations_view.xml42
-rw-r--r--bin/addons/base/module/wizard/wizard_configuration.py42
-rw-r--r--bin/addons/base/module/wizard/wizard_import_lang.py85
-rw-r--r--bin/addons/base/module/wizard/wizard_module_import.py118
-rw-r--r--bin/addons/base/module/wizard/wizard_module_lang_install.py84
-rw-r--r--bin/addons/base/module/wizard/wizard_module_upgrade.py219
-rw-r--r--bin/addons/base/module/wizard/wizard_update_module.py96
25 files changed, 1005 insertions, 708 deletions
diff --git a/bin/addons/base/module/wizard/__init__.py b/bin/addons/base/module/wizard/__init__.py
index c0af5977b21..a4133a50113 100644
--- a/bin/addons/base/module/wizard/__init__.py
+++ b/bin/addons/base/module/wizard/__init__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
@@ -15,19 +15,18 @@
# 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/>.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
-import wizard_update_module
-import wizard_module_upgrade
-import wizard_configuration
-import wizard_module_lang_install
-import add_new
-import wizard_export_lang
-import wizard_import_lang
-import wizard_module_import
-import wizard_update_translations
+import base_module_import
+import base_module_update
+import base_language_install
+import base_import_language
+import base_module_upgrade
+import base_module_configuration
+import base_export_language
+import base_update_translations
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/bin/addons/base/module/wizard/wizard_export_lang.py b/bin/addons/base/module/wizard/base_export_language.py
index b59351be61b..1b43b561ac3 100644
--- a/bin/addons/base/module/wizard/wizard_export_lang.py
+++ b/bin/addons/base/module/wizard/base_export_language.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+# 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
@@ -15,7 +15,7 @@
# 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/>.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -27,7 +27,7 @@ from osv import fields,osv
from tools.translate import _
from tools.misc import get_iso_codes
-class wizard_export_lang(osv.osv_memory):
+class base_language_export(osv.osv_memory):
def _get_languages(self, cr, uid, context):
lang_obj=pooler.get_pool(cr.dbname).get('res.lang')
@@ -67,7 +67,8 @@ class wizard_export_lang(osv.osv_memory):
buf.close()
return self.write(cr, uid, ids, {'state':'get', 'data':out, 'advice':this.advice, 'name':this.name}, context=context)
- _name = "wizard.module.lang.export"
+ _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
@@ -78,11 +79,11 @@ class wizard_export_lang(osv.osv_memory):
'state': fields.selection( ( ('choose','choose'), # choose language
('get','get'), # get the file
) ),
- }
- _defaults = { 'state': lambda *a: 'choose',
- 'name': lambda *a: 'lang.tar.gz'
- }
-wizard_export_lang()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+ }
+ _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
diff --git a/bin/addons/base/module/wizard/base_export_language_view.xml b/bin/addons/base/module/wizard/base_export_language_view.xml
new file mode 100644
index 00000000000..c908c5ce03a
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_export_language_view.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="wizard_lang_export" model="ir.ui.view">
+ <field name="name">Export Translations</field>
+ <field name="model">base.language.export</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Export Translations">
+ <group col="8">
+ <group colspan="3">
+ <field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
+ <newline/>
+ <label colspan="4" width="220" string="OpenERP translations (core, modules, clients) are managed through Launchpad.net, our open source project management facility. We use their online interface to synchronize all translations efforts."/>
+ <label colspan="4" width="220" string="To improve or expand the official translations, you should use directly Lauchpad's web interface (Rosetta). If you need to perform mass translation, Launchpad also allows uploading full .po files at once"/>
+ <label colspan="4" width="220"/>
+ <label colspan="4" width="220" string="To browse official translations, you can start with these links:"/>
+ <label colspan="4" width="220" string="https://help.launchpad.net/Translations"/>
+ <label colspan="4" width="220" string="https://translations.launchpad.net/openobject"/>
+ </group>
+ <separator orientation="vertical" rowspan="15"/>
+ <group colspan="4">
+ <group colspan="4" states="choose">
+ <separator colspan="4" string="Export Translation"/>
+ <field name="lang"/>
+ <field name="format" required="1"/>
+ <field height="200" name="modules" nolabel="1" colspan="4"/>
+ <field invisible="1" name="state"/>
+ </group>
+ <group colspan="4" states="get">
+ <separator string="Export done" colspan="4"/>
+ <field name="name" invisible="1" colspan="4"/>
+ <field name="data" nolabel="1" readonly="1" fieldname="name" colspan="4"/>
+ <field height="80" name="advice" nolabel="1" colspan="4"/>
+ </group>
+ </group>
+ <group colspan="8" col="8" states="choose">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button icon="gtk-cancel" name="act_cancel" special="cancel" string="_Close" type="object"/>
+ <button icon="gtk-ok" name="act_getfile" string="_Export" type="object"/>
+ </group>
+ <group colspan="8" col="8" states="get">
+ <separator string="" colspan="8"/>
+ <label colspan="7" width="220"/>
+ <button icon="gtk-close" name="act_destroy" special="cancel" string="_Close" type="object"/>
+ </group>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_wizard_lang_export" model="ir.actions.act_window">
+ <field name="name">Export Translation</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.language.export</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+ <menuitem action="action_wizard_lang_export" id="menu_wizard_lang_export" parent="menu_translation_export"/>
+ </data>
+</openerp>
diff --git a/bin/addons/base/module/wizard/base_import_language.py b/bin/addons/base/module/wizard/base_import_language.py
new file mode 100644
index 00000000000..6608ade03ef
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_import_language.py
@@ -0,0 +1,63 @@
+# -*- 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
+from tempfile import TemporaryFile
+from osv import osv, fields
+
+class base_language_import(osv.osv_memory):
+ """ Language Import """
+
+ _name = "base.language.import"
+ _description = "Language Import"
+ _inherit = "ir.wizard.screen"
+
+ _columns = {
+ 'name': fields.char('Language Name',size=64 , required=True),
+ 'code': fields.char('Code (eg:en__US)',size=5 , required=True),
+ 'data': fields.binary('File', required=True),
+ }
+
+ def import_lang(self, cr, uid, ids, context):
+ """
+ Import Language
+ @param cr: the current row, from the database cursor.
+ @param uid: the current user’s ID for security checks.
+ @param ids: the ID or list of IDs
+ @param context: A standard dictionary
+ """
+
+ import_data = self.browse(cr, uid, ids)[0]
+ fileobj = TemporaryFile('w+')
+ fileobj.write(base64.decodestring(import_data.data))
+
+ # now we determine the file format
+ fileobj.seek(0)
+ first_line = fileobj.readline().strip().replace('"', '').replace(' ', '')
+ 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)
+ fileobj.close()
+ return {}
+
+base_language_import() \ No newline at end of file
diff --git a/bin/addons/base/module/wizard/base_import_language_view.xml b/bin/addons/base/module/wizard/base_import_language_view.xml
new file mode 100644
index 00000000000..d313afc4080
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_import_language_view.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_base_import_language" model="ir.ui.view">
+ <field name="name">Import Translation</field>
+ <field name="model">base.language.import</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Import Translation">
+ <group col="8">
+ <group colspan="3">
+ <field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
+ <newline/>
+ <label colspan="4" width="220" string="Supported file formats: *.csv (Comma-separated values) or *.po (GetText Portable Objects)"/>
+ <label colspan="4" width="220" string="Please double-check that the file encoding is set to UTF-8 (sometimes called Unicode) when the translator exports it."/>
+ <label colspan="4" width="220"/>
+ <label colspan="4" width="220" string="When using CSV format, please also check that the first line of your file is one of the following:"/>
+ <label colspan="4" width="220" string="- type,name,res_id,src,value"/>
+ <label colspan="4" width="220" string="- module,type,name,res_id,src,value"/>
+ </group>
+ <separator orientation="vertical" rowspan="15"/>
+ <group colspan="4" col="4">
+ <separator string="Import Translation" colspan="4"/>
+ <label colspan="4" nolabel="1" string="If you need another language than the official ones available, you can import a language pack from here. Other OpenERP languages than the official ones can be found on launchpad."/>
+ <newline/>
+ <field name="name" width="200"/>
+ <field name="code"/>
+ <field name="data" colspan="4"/>
+ </group>
+ <group colspan="8" col="8">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button special="cancel" string="_Close" icon="gtk-cancel"/>
+ <button name="import_lang" string="_Import" type="object" icon="gtk-ok"/>
+ </group>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_view_base_import_language" model="ir.actions.act_window">
+ <field name="name">Import Translation</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.language.import</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+ <menuitem
+ action="action_view_base_import_language"
+ id="menu_view_base_import_language"
+ parent="menu_translation_export"/>
+
+ </data>
+</openerp>
diff --git a/bin/addons/base/module/wizard/base_language_install.py b/bin/addons/base/module/wizard/base_language_install.py
new file mode 100644
index 00000000000..9cdae41ad2b
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_language_install.py
@@ -0,0 +1,54 @@
+# -*- 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
+from osv import osv, fields
+
+class base_language_install(osv.osv_memory):
+ """ Install Language"""
+
+ _name = "base.language.install"
+ _inherit = "ir.wizard.screen"
+ _description = "Install Language"
+
+ _columns = {
+ 'lang': fields.selection(tools.scan_languages(),'Language', required=True),
+ 'overwrite': fields.boolean('Overwrite Existing Terms', help="If you check this box, your customized translations will be overwritten and replaced by the official ones."),
+ 'state':fields.selection([('init','init'),('done','done')], 'state', readonly=True),
+ }
+ _defaults = {
+ 'state': 'init',
+ 'overwrite': False
+ }
+ def lang_install(self, cr, uid, ids, context):
+ language_obj = self.browse(cr, uid, ids)[0]
+ lang = language_obj.lang
+ if lang:
+ modobj = self.pool.get('ir.module.module')
+ mids = modobj.search(cr, uid, [('state', '=', 'installed')])
+ if language_obj.overwrite:
+ context = {'overwrite': True}
+ modobj.update_translations(cr, uid, mids, lang, context or {})
+ self.write(cr, uid, ids, {'state': 'done'}, context=context)
+ return False
+base_language_install()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/bin/addons/base/module/wizard/base_language_install_view.xml b/bin/addons/base/module/wizard/base_language_install_view.xml
new file mode 100644
index 00000000000..d207ea9ea29
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_language_install_view.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_base_language_install" model="ir.ui.view">
+ <field name="name">Load Official Translation</field>
+ <field name="model">base.language.install</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Load Official Translation">
+ <group col="8">
+ <group colspan="3">
+ <field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
+ <newline/>
+ <label colspan="4" width="220" string="This wizard helps you add a new language to your OpenERP system. After loading a new language it becomes available as default interface language for users and partners."/>
+ <label colspan="4" width="220"/>
+ <label colspan="4" width="220" string="Please be patient, this operation may take a few minutes (depending on the number of modules currently installed)..."/>
+ <field name="state" invisible="1"/>
+ </group>
+ <separator orientation="vertical" rowspan="15"/>
+ <group colspan="4">
+ <separator string="Load an Official Translation" colspan="4"/>
+ <group states="init" colspan="4">
+ <field name="lang" colspan="4"/>
+ <field name="overwrite" colspan="4" groups="base.group_extended"/>
+ </group>
+ <group states="done" colspan="4">
+ <label string="The selected language has been successfully installed.
+You must change the preferences of the user and open a new menu to view the changes." colspan="4"/>
+ </group>
+ </group>
+ <group colspan="8" col="8" states="init">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button special="cancel" string="Cancel" icon="gtk-cancel"/>
+ <button name="lang_install" string="Load" type="object" icon="gtk-ok"/>
+ </group>
+ <group colspan="8" col="8" states="done">
+ <separator string="" colspan="8"/>
+ <label colspan="7" width="220"/>
+ <button special="cancel" string="Close" icon="gtk-ok"/>
+ </group>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_view_base_language_install" model="ir.actions.act_window">
+ <field name="name">Load Official Translation</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.language.install</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+ <menuitem
+ name="Load an Official Translation"
+ action="action_view_base_language_install"
+ id="menu_view_base_language_install"
+ parent="menu_translation" sequence="2"/>
+ </data>
+</openerp>
+
diff --git a/bin/addons/base/module/wizard/base_module_configuration.py b/bin/addons/base/module/wizard/base_module_configuration.py
new file mode 100644
index 00000000000..866b22905e0
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_configuration.py
@@ -0,0 +1,52 @@
+# -*- 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/>.
+#
+##############################################################################
+
+from osv import osv
+from tools.translate import _
+
+class base_module_configuration(osv.osv_memory):
+
+ _name = "base.module.configuration"
+
+ def start(self, cr, uid, ids, context=None):
+ todo_ids = self.pool.get('ir.actions.todo').search(cr, uid, ['|', '|', ('restart','=','always'), ('state', '=', 'open'), '&', ('state', '=', 'skip'), ('restart', '=', 'onskip')])
+ if not todo_ids:
+ # When there is no wizard todo it will display message
+ data_obj = self.pool.get('ir.model.data')
+ result = data_obj._get_id(cr, uid, 'base', 'view_base_module_configuration_form')
+ view_id = data_obj.browse(cr, uid, result).res_id
+ value = {
+ 'name': _('System Configuration done'),
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'base.module.configuration',
+ 'view_id': [view_id],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new'
+ }
+ return value
+ # Run the config wizards
+ config_pool = self.pool.get('res.config')
+ return config_pool.start(cr, uid, ids, context=context)
+
+base_module_configuration()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/bin/addons/base/module/wizard/base_module_configuration_view.xml b/bin/addons/base/module/wizard/base_module_configuration_view.xml
new file mode 100644
index 00000000000..2d0b31b7126
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_configuration_view.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_base_module_configuration_form" model="ir.ui.view">
+ <field name="name">Module Configuration</field>
+ <field name="model">base.module.configuration</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="System Configuration Done">
+ <label align="0.0" string="All pending configuration wizards have been executed. You may restart individual wizards via the list of configuration wizards." colspan="4"/>
+ <separator string="" colspan="4"/>
+ <newline/>
+ <button special="cancel" string="_Ok" icon="gtk-ok"/>
+ </form>
+ </field>
+ </record>
+
+
+ <record id="action_start_configurator" model="ir.actions.server">
+ <field name="name">Start Configuration</field>
+ <field name="model_id" ref="model_base_module_configuration"/>
+ <field name="state">code</field>
+ <field name="code">action = obj.start([])</field>
+ </record>
+
+ <menuitem name="Start Configuration"
+ action="action_start_configurator"
+ id="menu_view_base_module_configuration" parent="base.menu_config"
+ type="server" icon="STOCK_EXECUTE" sequence="100" />
+
+ <record model="ir.values" id="action_todo_config">
+ <field name="model_id" ref="model_ir_actions_todo" />
+ <field name="object" eval="1" />
+ <field name="name">Start Configuration</field>
+ <field name="key2">client_action_multi</field>
+ <field name="value" eval="'ir.actions.server,' + str(ref('action_start_configurator'))" />
+ <field name="key">action</field>
+ <field name="model">ir.actions.todo</field>
+ </record>
+ <record id="ir_ui_view_sc_configuration" model="ir.ui.view_sc">
+ <field name="name">Reconfigure</field>
+ <field name="resource">ir.ui.menu</field>
+ <field name="user_id" ref="base.user_root"/>
+ <field name="res_id" ref="menu_view_base_module_configuration"/>
+ </record>
+
+ </data>
+</openerp>
diff --git a/bin/addons/base/module/wizard/base_module_import.py b/bin/addons/base/module/wizard/base_module_import.py
new file mode 100644
index 00000000000..05c3b18198d
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_import.py
@@ -0,0 +1,87 @@
+# -*- 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 os
+import tools
+
+import zipfile
+from StringIO import StringIO
+import base64
+from tools.translate import _
+from osv import osv, fields
+
+class base_module_import(osv.osv_memory):
+ """ Import Module """
+
+ _name = "base.module.import"
+ _inherit = "ir.wizard.screen"
+ _description = "Import Module"
+
+ _columns = {
+ 'module_file': fields.binary('Module .ZIP file', required=True),
+ 'state':fields.selection([('init','init'),('done','done')], 'state', readonly=True),
+ 'module_name': fields.char('Module Name', size=128),
+ }
+
+ _defaults = {
+ 'state': 'init',
+ }
+
+ def importzip(self, cr, uid, ids, context):
+ (data,) = self.browse(cr, uid, ids , context=context)
+ module_data = data.module_file
+
+ val = base64.decodestring(module_data)
+ fp = StringIO()
+ fp.write(val)
+ fdata = zipfile.ZipFile(fp, 'r')
+ fname = fdata.namelist()[0]
+ module_name = os.path.split(fname)[0]
+
+ ad = tools.config['addons_path'].split(",")[-1]
+
+ fname = os.path.join(ad, module_name+'.zip')
+ try:
+ fp = file(fname, 'wb')
+ fp.write(val)
+ fp.close()
+ except IOError:
+ raise osv.except_osv(_('Error !'), _('Can not create the module file: %s !') % (fname,) )
+
+ self.pool.get('ir.module.module').update_list(cr, uid, {'module_name': module_name,})
+ self.write(cr, uid, ids, {'state':'done', 'module_name': module_name}, context)
+ return False
+
+ def action_module_open(self, cr, uid, ids, context):
+ (data,) = self.browse(cr, uid, ids , context=context)
+ return {
+ 'domain': str([('name', '=', data.module_name)]),
+ 'name': 'Modules',
+ 'view_type': 'form',
+ 'view_mode': 'tree,form',
+ 'res_model': 'ir.module.module',
+ 'type': 'ir.actions.act_window',
+ }
+
+base_module_import()
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file
diff --git a/bin/addons/base/module/wizard/base_module_import_view.xml b/bin/addons/base/module/wizard/base_module_import_view.xml
new file mode 100644
index 00000000000..8e43789b057
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_import_view.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_base_module_import" model="ir.ui.view">
+ <field name="name">Module Import</field>
+ <field name="model">base.module.import</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Import module">
+ <group col="8">
+ <group colspan="3" col="1">
+ <field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
+ <newline/>
+ <label width="220" string="This wizard helps you add a new language to you OpenERP system. After loading a new language it becomes available as default interface language for users and partners."/>
+ <label width="220"/>
+ <label width="220" string="Please be patient, this operation may take a few minutes (depending on the number of modules currently installed)..."/>
+ <field name="state" invisible="1"/>
+ </group>
+ <separator orientation="vertical" rowspan="5"/>
+ <group colspan="4">
+ <separator string="Module Import" colspan="4"/>
+ <group states="init" col="4">
+ <label string="Select module package to import (.zip file):" colspan="4"/>
+ <field name="module_file" colspan="4"/>
+ </group>
+ <group states="done" col="4">
+ <label string="Module file successfully imported!" colspan="4"/>
+ </group>
+ </group>
+ <group colspan="8" col="8" states="init">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button special="cancel" string="Cancel" icon="gtk-cancel"/>
+ <button name="importzip" string="Import module" type="object" icon="gtk-apply"/>
+ </group>
+ <group colspan="8" col="8" states="done">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button special="cancel" string="Close" icon="gtk-ok"/>
+ <button name="action_module_open" string="Open Modules" type="object" icon="gtk-go-forward"/>
+ </group>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_view_base_module_import" model="ir.actions.act_window">
+ <field name="name">Module Import</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.module.import</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+ <menuitem
+ name="Import Module"
+ action="action_view_base_module_import"
+ id="menu_view_base_module_import"
+ parent="menu_management"
+ sequence="1"/>
+
+ </data>
+</openerp>
+
diff --git a/bin/addons/base/module/wizard/add_new.py b/bin/addons/base/module/wizard/base_module_scan.py
index c6eddab2adb..d47e091955f 100644
--- a/bin/addons/base/module/wizard/add_new.py
+++ b/bin/addons/base/module/wizard/base_module_scan.py
@@ -1,9 +1,8 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-# Copyright (C) 2010 OpenERP s.a. (<http://openerp.com>).
+# 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
@@ -16,34 +15,26 @@
# 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/>.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
-
import os
-import re
import glob
-import time
import imp
import tools
-import wizard
-import pooler
import zipfile
+from osv import osv
-module_name_re = re.compile('.*addons.(.*?).__terp__.py$')
+class base_module_scan(osv.osv_memory):
+ """ scan module """
-_info_arch = '''<?xml version="1.0"?>
-<form string="Scan for new modules">
- <label string="This function will check if you installed new modules in the 'addons' path of your server installation." colspan="4" />
-</form>
-'''
-_info_fields = {}
+ _name = "base.module.scan"
+ _description = "scan module"
-class wizard_install_module(wizard.interface):
- def watch_dir(self, cr, uid, data, context):
- mod_obj = pooler.get_pool(cr.dbname).get('ir.module.module')
+ def watch_dir(self, cr, uid, ids, context):
+ mod_obj = self.pool.get('ir.module.module')
all_mods = mod_obj.read(cr, uid, mod_obj.search(cr, uid, []), ['name', 'state'])
known_modules = [x['name'] for x in all_mods]
ls_ad = glob.glob(os.path.join(tools.config['addons_path'], '*', '__terp__.py'))
@@ -79,18 +70,4 @@ class wizard_install_module(wizard.interface):
mod_obj.write(cr, uid, [mod['id']], {'state': 'uninstalled'})
return {}
- states = {
- 'init': {
- 'actions': [],
- 'result': {'type':'form', 'arch': _info_arch, 'fields': _info_fields, 'state':[('end','Cancel','gtk-cancel'),('addmod','Check new modules','gtk-ok')]}
- },
- 'addmod': {
- 'actions': [watch_dir],
- 'result': {'type':'state', 'state':'end'}
- },
- }
-wizard_install_module('module.module.scan')
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
+base_module_scan() \ No newline at end of file
diff --git a/bin/addons/base/module/wizard/base_module_scan_view.xml b/bin/addons/base/module/wizard/base_module_scan_view.xml
new file mode 100644
index 00000000000..a039c3122e1
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_scan_view.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_base_module_scan" model="ir.ui.view">
+ <field name="name">Module Scan</field>
+ <field name="model">base.module.scan</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Scan for new modules">
+ <separator string="" colspan="4"/>
+ <label string="This function will check if you installed new modules in the 'addons' path of your server installation." colspan="4" />
+ <separator string="" colspan="4"/>
+ <newline/>
+ <group colspan="4">
+ <button special="cancel" string="Close" icon="gtk-cancel"/>
+ <button name="watch_dir" string="Check new modules" type="object" icon="gtk-ok"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_view_base_module_scan" model="ir.actions.act_window">
+ <field name="name">Module Scan</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.module.scan</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+ </data>
+</openerp>
+
diff --git a/bin/addons/base/module/wizard/base_module_update.py b/bin/addons/base/module/wizard/base_module_update.py
new file mode 100644
index 00000000000..a0d21840d90
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_update.py
@@ -0,0 +1,61 @@
+# -*- 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/>.
+#
+##############################################################################
+from osv import osv, fields
+
+class base_module_update(osv.osv_memory):
+ """ Update Module """
+
+ _name = "base.module.update"
+ _description = "Update Module"
+ _inherit = "ir.wizard.screen"
+
+ _columns = {
+ 'update': fields.integer('Number of modules updated', readonly=True),
+ 'add': fields.integer('Number of modules added', readonly=True),
+ 'state':fields.selection([('init','init'),('done','done')], 'state', readonly=True),
+ }
+
+ _defaults = {
+ 'state': 'init',
+ }
+
+ def update_module(self, cr, uid, ids, context=None):
+ module_obj = self.pool.get('ir.module.module')
+ update, add = module_obj.update_list(cr, uid,)
+ self.write(cr, uid, ids, {'update': update, 'add': add, 'state': 'done'}, context=context)
+ return False
+
+ def action_module_open(self, cr, uid, ids, context):
+ res = {
+ 'domain': str([]),
+ 'name': 'Modules',
+ 'view_type': 'form',
+ 'view_mode': 'tree,form',
+ 'res_model': 'ir.module.module',
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
+ }
+ return res
+
+
+base_module_update()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file
diff --git a/bin/addons/base/module/wizard/base_module_update_view.xml b/bin/addons/base/module/wizard/base_module_update_view.xml
new file mode 100644
index 00000000000..51f0c94f31c
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_update_view.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_base_module_update" model="ir.ui.view">
+ <field name="name">Module Update</field>
+ <field name="model">base.module.update</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Update Module List">
+ <group col="8">
+ <group colspan="3">
+ <field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
+ <newline/>
+ <label colspan="4" width="220" string="This wizard will scan all module repositories on the server side to detect newly added modules as well as any change to existing modules."/>
+ <label colspan="4" width="220"/>
+ <label colspan="4" width="220" string="Please be patient, as this operation may take a few seconds..."/>
+ <field name="state" invisible="1"/>
+ </group>
+ <separator orientation="vertical" rowspan="15"/>
+ <group colspan="4">
+ <separator string="Module update result" colspan="4"/>
+ <group states="init" colspan="4">
+ <label string="Click on Update below to start the process..." colspan="4"/>
+ </group>
+ <group states="done" colspan="4">
+ <field name="update" colspan="4"/>
+ <field name="add" colspan="4"/>
+ </group>
+ </group>
+ <group colspan="8" col="8" states="init">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button special="cancel" string="Cancel" icon="gtk-cancel"/>
+ <button name="update_module" string="Update" type="object" icon="gtk-ok"/>
+ </group>
+ <group colspan="8" col="8" states="done">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button special="cancel" string="Close" icon="gtk-ok"/>
+ <button name="action_module_open" string="Open Modules" type="object" icon="gtk-go-forward"/>
+ </group>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_view_base_module_update" model="ir.actions.act_window">
+ <field name="name">Module Update</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.module.update</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+ <menuitem
+ name="Update Modules List"
+ action="action_view_base_module_update"
+ id="menu_view_base_module_update"
+ parent="menu_management"
+ sequence="2"
+ icon="STOCK_CONVERT"/>
+
+ </data>
+</openerp>
diff --git a/bin/addons/base/module/wizard/base_module_upgrade.py b/bin/addons/base/module/wizard/base_module_upgrade.py
new file mode 100644
index 00000000000..4db4028bdb0
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_upgrade.py
@@ -0,0 +1,118 @@
+# -*- 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 pooler
+from osv import osv, fields
+
+class base_module_upgrade(osv.osv_memory):
+ """ Module Upgrade """
+
+ _name = "base.module.upgrade"
+ _description = "Module Upgrade"
+
+ _columns = {
+ 'module_info': fields.text('Modules to update',readonly=True),
+ }
+
+ def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
+ """ Changes the view dynamically
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param context: A standard dictionary
+ @return: New arch of view.
+ """
+ res = super(base_module_upgrade, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
+ record_id = context and context.get('active_id', False) or False
+ active_model = context.get('active_model')
+ if (not record_id) or (not active_model):
+ return res
+
+ ids = self.get_module_list(cr, uid, context=context)
+ if not ids:
+ res['arch'] = '''<form string="Apply Scheduled Upgrades">
+ <separator string="System update completed" colspan="4"/>
+ <label align="0.0" string="The selected modules have been updated / installed !" colspan="4"/>
+ <label align="0.0" string="We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." colspan="4"/>
+ <separator string="" colspan="4"/>
+ <newline/>
+ <button special="cancel" string="Close" icon="gtk-cancel"/>
+ <button name="config" string="Start configuration" type="object" icon="gtk-ok"/>
+ </form>'''
+
+ return res
+
+ def get_module_list(self, cr, uid, context=None):
+ mod_obj = self.pool.get('ir.module.module')
+ ids = mod_obj.search(cr, uid, [
+ ('state', 'in', ['to upgrade', 'to remove', 'to install'])])
+ return ids
+
+ def default_get(self, cr, uid, fields, context=None):
+ """
+ This function checks for precondition before wizard executes
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param fields: List of fields for default value
+ @param context: A standard dictionary for contextual values
+ """
+ mod_obj = self.pool.get('ir.module.module')
+ ids = self.get_module_list(cr, uid, context=context)
+ res = mod_obj.read(cr, uid, ids, ['name','state'], context)
+ return {'module_info': '\n'.join(map(lambda x: x['name']+' : '+x['state'], res))}
+
+ def upgrade_module(self, cr, uid, ids, context):
+ pool = pooler.get_pool(cr.dbname)
+ mod_obj = self.pool.get('ir.module.module')
+ data_obj = self.pool.get('ir.model.data')
+ ids = mod_obj.search(cr, uid, [('state', 'in', ['to upgrade', 'to remove', 'to install'])])
+ unmet_packages = []
+ mod_dep_obj = pool.get('ir.module.module.dependency')
+ for mod in mod_obj.browse(cr, uid, ids):
+ depends_mod_ids = mod_dep_obj.search(cr, uid, [('module_id', '=', mod.id)])
+ for dep_mod in mod_dep_obj.browse(cr, uid, depends_mod_ids):
+ if dep_mod.state in ('unknown','uninstalled'):
+ unmet_packages.append(dep_mod.name)
+ if len(unmet_packages):
+ raise osv.except_osv('Unmet dependency !', 'Following modules are uninstalled or unknown. \n\n'+'\n'.join(unmet_packages))
+ mod_obj.download(cr, uid, ids, context=context)
+ cr.commit()
+ _, pool = pooler.restart_pool(cr.dbname, update_module=True)
+
+ id2 = data_obj._get_id(cr, uid, 'base', 'view_base_module_upgrade_install')
+ if id2:
+ id2 = data_obj.browse(cr, uid, id2, context=context).res_id
+
+ return {
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'base.module.upgrade',
+ 'views': [(id2, 'form')],
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ }
+
+ def config(self, cr, uid, ids, context=None):
+ return self.pool.get('res.config').next(cr, uid, [], context=context)
+
+base_module_upgrade()
diff --git a/bin/addons/base/module/wizard/base_module_upgrade_view.xml b/bin/addons/base/module/wizard/base_module_upgrade_view.xml
new file mode 100644
index 00000000000..b8bb282d6ed
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_module_upgrade_view.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_base_module_upgrade" model="ir.ui.view">
+ <field name="name">Module Upgrade</field>
+ <field name="model">base.module.upgrade</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="System Update">
+ <group colspan="2" col="4">
+ <label align="0.0" string="Your system will be updated." colspan="4"/>
+ <label align="0.0" string="Note that this operation might take a few minutes." colspan="4"/>
+ <separator string="Modules to update" colspan="4"/>
+ <field name="module_info" nolabel="1" colspan="4"/>
+ <separator string="" colspan="4"/>
+ <button special="cancel" string="Cancel" icon="gtk-cancel"/>
+ <button name="upgrade_module" string="Start update" type="object" icon="gtk-ok"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_view_base_module_upgrade" model="ir.actions.act_window">
+ <field name="name">Module Upgrade</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.module.upgrade</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+ <menuitem
+ name="Apply Scheduled Upgrades"
+ action="action_view_base_module_upgrade"
+ id="menu_view_base_module_upgrade"
+ parent="menu_management"
+ sequence="3"/>
+
+ <act_window id="action_view_base_module_upgrade_window"
+ key2="client_action_multi" name="Apply Scheduled Upgrades"
+ res_model="base.module.upgrade" src_model="ir.module.module"
+ view_mode="form" target="new" view_type="form" />
+
+ <record id="view_base_module_upgrade_install" model="ir.ui.view">
+ <field name="name">Module Upgrade Install</field>
+ <field name="model">base.module.upgrade</field>
+ <field name="type">form</field>
+ <field name="priority" eval="20"/>
+ <field name="arch" type="xml">
+ <form string="Apply Scheduled Upgrades">
+ <separator string="System update completed" colspan="4"/>
+ <label align="0.0" string="The selected modules have been updated / installed !" colspan="4"/>
+ <label align="0.0" string="We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." colspan="4"/>
+ <separator string="" colspan="4"/>
+ <newline/>
+ <button special="cancel" string="Cancel" icon="gtk-cancel"/>
+ <button name="config" string="Start configuration" type="object" icon="gtk-ok"/>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_view_base_module_upgrade_install" model="ir.actions.act_window">
+ <field name="name">Module Upgrade Install</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.module.upgrade</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="view_id" ref="view_base_module_upgrade_install"/>
+ <field name="target">new</field>
+ </record>
+
+ </data>
+</openerp> \ No newline at end of file
diff --git a/bin/addons/base/module/wizard/wizard_update_translations.py b/bin/addons/base/module/wizard/base_update_translations.py
index 85914ff0164..b413e9d7093 100644
--- a/bin/addons/base/module/wizard/wizard_update_translations.py
+++ b/bin/addons/base/module/wizard/base_update_translations.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
@@ -15,7 +15,7 @@
# 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/>.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -24,18 +24,18 @@ import tools
import pooler
import cStringIO
-class update_translations(osv.osv_memory):
+class base_update_translations(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 _get_lang_name(self, cr, uid, lang_code):
lang_obj=pooler.get_pool(cr.dbname).get('res.lang')
ids=lang_obj.search(cr, uid, [('code', '=', lang_code)])
if not ids:
- raise osv.orm_except('Bad lang')
+ raise osv.except_osv(_('No language with code "%s" exists') % lang_code)
lang = lang_obj.browse(cr, uid, ids[0])
return lang.name
def act_cancel(self, cr, uid, ids, context=None):
@@ -50,9 +50,22 @@ class update_translations(osv.osv_memory):
buf.close()
return {'type': 'ir.actions.act_window_close'}
- _name = 'wizard.module.update_translations'
+ def default_get(self, cr, uid, fields, context=None):
+ res = super(base_update_translations, self).default_get(cr, uid, fields, context=context)
+
+ if context.get('active_model') != "res.lang":
+ return res
+
+ record_id = context and context.get('active_id', False) or False
+ if record_id:
+ lang = self.pool.get('res.lang').browse(cr, uid, record_id).code
+ res.update(lang=lang)
+ return res
+
+ _name = 'base.update.translations'
+ _inherit = "ir.wizard.screen"
_columns = {
'lang': fields.selection(_get_languages, 'Language', required=True),
}
-update_translations()
+base_update_translations() \ No newline at end of file
diff --git a/bin/addons/base/module/wizard/base_update_translations_view.xml b/bin/addons/base/module/wizard/base_update_translations_view.xml
new file mode 100644
index 00000000000..60d30440ca1
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_update_translations_view.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+ <record id="wizard_update_translations" model="ir.ui.view">
+ <field name="name">Synchronize Translations</field>
+ <field name="model">base.update.translations</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Synchronize Translations">
+ <group col="8">
+ <group colspan="3">
+ <field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
+ <newline/>
+ <label colspan="4" width="220" string="This wizard will detect new terms to translate in the application, so that you can then add translations manually or perform a complete export (as a template for a new language example)."/>
+ </group>
+ <separator orientation="vertical" rowspan="15"/>
+ <group colspan="4">
+ <separator string="Synchronize Translation" colspan="4"/>
+ <field name="lang" colspan="4"/>
+ </group>
+ <group colspan="8" col="8">
+ <separator string="" colspan="8"/>
+ <label colspan="6" width="220"/>
+ <button icon="gtk-cancel" name="act_cancel" special="cancel" string="Cancel" type="object"/>
+ <button icon="gtk-ok" name="act_update" string="Update" type="object"/>
+ </group>
+ </group>
+ </form>
+ </field>
+ </record>
+ <record id="action_wizard_update_translations" model="ir.actions.act_window">
+ <field name="name">Synchronize Translations</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">base.update.translations</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+ <menuitem action="action_wizard_update_translations" id="menu_wizard_update_translations" parent="menu_translation_app"/>
+
+ </data>
+</openerp>
diff --git a/bin/addons/base/module/wizard/wizard_configuration.py b/bin/addons/base/module/wizard/wizard_configuration.py
deleted file mode 100644
index e720ba419b0..00000000000
--- a/bin/addons/base/module/wizard/wizard_configuration.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 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 wizard
-import pooler
-
-class wizard_configuration(wizard.interface):
-
- def _config(self, cr, uid, data, context=None):
- return pooler.get_pool(cr.dbname).get('res.config')\
- .next(cr, uid, [], context=context)
-
- states = {
- 'init':{
- 'result': {
- 'type': 'action',
- 'action': _config,
- 'state': 'end',
- },
- }
- }
-wizard_configuration('module.configuration')
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/bin/addons/base/module/wizard/wizard_import_lang.py b/bin/addons/base/module/wizard/wizard_import_lang.py
deleted file mode 100644
index 70f94a68f98..00000000000
--- a/bin/addons/base/module/wizard/wizard_import_lang.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 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 wizard
-import tools
-import base64
-import pooler
-from tempfile import TemporaryFile
-
-view_form="""<?xml version="1.0"?>
-<form string="Import language">
- <image name="gtk-dialog-info" colspan="2"/>
- <group colspan="2" col="4">
- <separator string="Import New Language" colspan="4"/>
- <field name="name" width="200"/>
- <field name="code"/>
- <field name="data" colspan="4"/>
- <label string="You have to import a .CSV file wich is encoded in UTF-8.\n
-Please check that the first line of your file is one of the following:" colspan="4" align="0.0"/>
- <label string="type,name,res_id,src,value" colspan="4"/>
- <label string="module,type,name,res_id,src,value" colspan="4"/>
- <label string="You can also import .po files." colspan="4" align="0.0"/>
- </group>
-</form>"""
-
-fields_form={
- 'name':{'string':'Language name', 'type':'char', 'size':64, 'required':True},
- 'code':{'string':'Code (eg:en__US)', 'type':'char', 'size':5, 'required':True},
- 'data':{'string':'File', 'type':'binary', 'required':True},
-}
-
-class wizard_import_lang(wizard.interface):
-
- def _import_lang(self, cr, uid, data, context):
- form=data['form']
- fileobj = TemporaryFile('w+')
- fileobj.write( base64.decodestring(form['data']) )
-
- # now we determine the file format
- fileobj.seek(0)
- first_line = fileobj.readline().strip().replace('"', '').replace(' ', '')
- 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, form['code'], lang_name=form['name'])
- fileobj.close()
- return {}
-
- states={
- 'init':{
- 'actions': [],
- 'result': {'type': 'form', 'arch': view_form, 'fields': fields_form,
- 'state':[
- ('end', 'Cancel', 'gtk-cancel'),
- ('finish', 'Ok', 'gtk-ok', True)
- ]
- }
- },
- 'finish':{
- 'actions':[],
- 'result':{'type':'action', 'action':_import_lang, 'state':'end'}
- },
- }
-wizard_import_lang('module.lang.import')
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/bin/addons/base/module/wizard/wizard_module_import.py b/bin/addons/base/module/wizard/wizard_module_import.py
deleted file mode 100644
index 1350a4ad0ba..00000000000
--- a/bin/addons/base/module/wizard/wizard_module_import.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 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 wizard
-import osv
-import pooler
-import os
-import tools
-
-import zipfile
-from StringIO import StringIO
-import base64
-from tools.translate import _
-
-finish_form ='''<?xml version="1.0"?>
-<form string="Module import">
- <label string="Module successfully imported !" colspan="4"/>
-</form>
-'''
-
-ask_form ='''<?xml version="1.0"?>
-<form string="Module import">
- <separator string="Module Import" colspan="4"/>
- <label string="Please give your module .ZIP file to import." colspan="4"/>
- <field name="module_file"/>
-</form>
-'''
-
-ask_fields = {
- 'module_file': {'string': 'Module .ZIP file', 'type': 'binary', 'required': True},
-}
-
-class move_module_wizard(wizard.interface):
- def importzip(self, cr, uid, data, context):
- module_obj=pooler.get_pool(cr.dbname).get('ir.module.module')
- module_data = data['form']['module_file']
-
- val =base64.decodestring(module_data)
- fp = StringIO()
- fp.write(val)
- fdata = zipfile.ZipFile(fp, 'r')
- fname = fdata.namelist()[0]
- module_name = os.path.split(fname)[0]
-
- ad = tools.config['addons_path']
-
- fname = os.path.join(ad,module_name+'.zip')
- try:
- fp = file(fname, 'wb')
- fp.write(val)
- fp.close()
- except IOError, e:
- raise wizard.except_wizard(_('Error !'), _('Can not create the module file: %s !') % (fname,) )
-
- pooler.get_pool(cr.dbname).get('ir.module.module').update_list(cr, uid)
- return {'module_name': module_name}
-
- def _action_module_open(self, cr, uid, data, context):
- return {
- 'domain': str([('name', '=', data['form']['module_name'])]),
- 'name': 'Module List',
- 'view_type': 'form',
- 'view_mode': 'tree,form',
- 'res_model': 'ir.module.module',
- 'view_id': False,
- 'type': 'ir.actions.act_window'
- }
-
- states = {
- 'init': {
- 'actions': [],
- 'result': {
- 'type': 'form',
- 'arch': ask_form,
- 'fields': ask_fields,
- 'state': [
- ('end', 'Cancel', 'gtk-cancel'),
- ('import', 'Import module', 'gtk-ok', True)
- ]
- }
- },
- 'import': {
- 'actions': [importzip],
- 'result': {
- 'type':'form',
- 'arch':finish_form,
- 'fields':{},
- 'state':[('open_window','Close')]
- }
- },
- 'open_window': {
- 'actions': [],
- 'result': {'type': 'action', 'action': _action_module_open, 'state':'end'}
- },
- }
-move_module_wizard('base.module.import')
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/bin/addons/base/module/wizard/wizard_module_lang_install.py b/bin/addons/base/module/wizard/wizard_module_lang_install.py
deleted file mode 100644
index 7367bdb4baa..00000000000
--- a/bin/addons/base/module/wizard/wizard_module_lang_install.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 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 wizard
-import tools
-import pooler
-
-view_form_end = """<?xml version="1.0"?>
-<form string="Language file loaded.">
- <image name="gtk-dialog-info" colspan="2"/>
- <group colspan="2" col="4">
- <separator string="Installation Done" colspan="4"/>
- <label align="0.0" string="The selected language has been successfully installed.\nYou must change the preferences of the user and open a new menu to view changes." colspan="4"/>
- </group>
-</form>"""
-
-view_form = """<?xml version="1.0"?>
-<form string="System Upgrade">
- <image name="gtk-dialog-info" colspan="2"/>
- <group colspan="2" col="4">
- <separator string="System Upgrade" colspan="4"/>
- <label align="0.0" string="Choose a language to install:" colspan="4"/>
- <field name="lang" colspan="4" required="1"/>
- <label align="0.0" string="Note that this operation may take a few minutes." colspan="4"/>
- </group>
-</form>"""
-
-
-class wizard_lang_install(wizard.interface):
- def _lang_install(self, cr, uid, data, context):
- lang = data['form']['lang']
- if lang:
- modobj = pooler.get_pool(cr.dbname).get('ir.module.module')
- mids = modobj.search(cr, uid, [('state', '=', 'installed')])
- modobj.update_translations(cr, uid, mids, lang)
- return {}
-
- fields_form = {
- 'lang': {'string':'Language', 'type':'selection', 'selection':tools.scan_languages(),
- },
- }
-
- states = {
- 'init': {
- 'actions': [],
- 'result': {'type': 'form', 'arch': view_form, 'fields': fields_form,
- 'state': [
- ('end', 'Cancel', 'gtk-cancel'),
- ('start', 'Start installation', 'gtk-ok', True)
- ]
- }
- },
- 'start': {
- 'actions': [_lang_install],
- 'result': {'type': 'form', 'arch': view_form_end, 'fields': {},
- 'state': [
- ('end', 'Ok', 'gtk-ok', True)
- ]
- }
- },
- }
-wizard_lang_install('module.lang.install')
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/bin/addons/base/module/wizard/wizard_module_upgrade.py b/bin/addons/base/module/wizard/wizard_module_upgrade.py
deleted file mode 100644
index 04be1c1428d..00000000000
--- a/bin/addons/base/module/wizard/wizard_module_upgrade.py
+++ /dev/null
@@ -1,219 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 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 wizard
-import pooler
-import os
-import tools
-
-view_form_end = """<?xml version="1.0"?>
-<form string="System update done">
- <separator string="System update completed"/>
- <label align="0.0" string="The selected modules have been updated / installed !" colspan="4"/>
- <label align="0.0" string="We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." colspan="4"/>
-</form>"""
-
-view_form = """<?xml version="1.0"?>
-<form string="System Update">
- <image name="gtk-dialog-info" colspan="2"/>
- <group colspan="2" col="4">
- <label align="0.0" string="Your system will be updated." colspan="4"/>
- <label align="0.0" string="Note that this operation might take a few minutes." colspan="4"/>
- <separator string="Modules to update"/>
- <field name="module_info" nolabel="1" colspan="4"/>
- </group>
-</form>"""
-
-view_field = {
- "module_info": {'type': 'text', 'string': 'Modules to update', '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)
- return {'module_info': '\n'.join(map(lambda x: x['name']+' : '+x['state'], res))}
-
- def _check_upgrade_module(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'])])
- if ids and len(ids):
- return 'next'
- else:
- return 'end'
-
- def _upgrade_module(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'])])
- unmet_packages = []
- mod_dep_obj = pool.get('ir.module.module.dependency')
- for mod in mod_obj.browse(cr, uid, ids):
- depends_mod_ids = mod_dep_obj.search(cr, uid, [('module_id', '=', mod.id)])
- for dep_mod in mod_dep_obj.browse(cr, uid, depends_mod_ids):
- if dep_mod.state in ('unknown','uninstalled'):
- unmet_packages.append(dep_mod.name)
- if len(unmet_packages):
- raise wizard.except_wizard('Unmet dependency !', 'Following modules are uninstalled or unknown. \n\n'+'\n'.join(unmet_packages))
- mod_obj.download(cr, uid, ids, context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
- return {}
-
- def _config(self, cr, uid, data, context=None):
- return pooler.get_pool(cr.dbname).get('res.config')\
- .next(cr, uid, [], context=context)
-
- 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 update', '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')
-
-
-class wizard_info_get_simple(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)
- return {'module_info': '\n'.join(map(lambda x: x['name']+' : '+x['state'], res)),}
-
- def _check_upgrade_module(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'])])
- if ids and len(ids):
- return 'next'
- else:
- return 'end'
-
- def _upgrade_module(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'])])
- unmet_packages = []
- mod_dep_obj = pool.get('ir.module.module.dependency')
- for mod in mod_obj.browse(cr, uid, ids):
- depends_mod_ids = mod_dep_obj.search(cr, uid, [('module_id', '=', mod.id)])
- for dep_mod in mod_dep_obj.browse(cr, uid, depends_mod_ids):
- if dep_mod.state in ('unknown','uninstalled'):
- unmet_packages.append(dep_mod.name)
- if len(unmet_packages):
- raise wizard.except_wizard('Unmet dependencies!', 'The following modules are not installed or unavailable. \n\n'+'\n'.join(unmet_packages))
- mod_obj.download(cr, uid, ids, context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
- return {}
-
- def _config(self, cr, uid, data, context=None):
- return pooler.get_pool(cr.dbname).get('res.config')\
- .next(cr, uid, [], context=context)
-
- 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 update', '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_simple('module.upgrade.simple')
-
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/bin/addons/base/module/wizard/wizard_update_module.py b/bin/addons/base/module/wizard/wizard_update_module.py
deleted file mode 100644
index 22e52bb6d6d..00000000000
--- a/bin/addons/base/module/wizard/wizard_update_module.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 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 wizard
-import netsvc
-import pooler
-
-class wizard_update_module(wizard.interface):
-
- arch = '''<?xml version="1.0"?>
- <form string="Scan for new modules">
- <label string="This function will check for new modules in the 'addons' path" colspan="4" align="0.0"/>
-
- </form>'''
- fields = {
-
- }
-
- arch_module = '''<?xml version="1.0"?>
- <form string="New modules">
- <field name="update" colspan="4"/>
- <field name="add" colspan="4"/>
- </form>'''
-
- fields_module = {
- 'update': {'type': 'integer', 'string': 'Number of modules updated', 'readonly': True},
- 'add': {'type': 'integer', 'string': 'Number of modules added', 'readonly': True},
- }
-
- def _update_module(self, cr, uid, data, context):
- update, add = pooler.get_pool(cr.dbname).get('ir.module.module').update_list(cr, uid)
- return {'update': update, 'add': add}
-
- def _action_module_open(self, cr, uid, data, context):
-
- res = {
- 'domain': str([]),
- 'name': 'Module List',
- 'view_type': 'form',
- 'view_mode': 'tree,form',
- 'res_model': 'ir.module.module',
- 'view_id': False,
- 'type': 'ir.actions.act_window'
- }
-
- search_view_id = pooler.get_pool(cr.dbname).get('ir.ui.view').search(cr, uid, [('name','=','ir.module.module.list.select')], context=context)
- if search_view_id:
- res.update({'search_view_id' : search_view_id[0]})
- return res
-
- states = {
- 'init': {
- 'actions': [],
- 'result': {'type': 'form', 'arch': arch, 'fields': fields,
- 'state': [
- ('end', 'Cancel', 'gtk-cancel'),
- ('update', 'Check new modules', 'gtk-ok', True)
- ]
- }
- },
- 'update': {
- 'actions': [_update_module],
- 'result': {'type': 'form', 'arch': arch_module, 'fields': fields_module,
- 'state': [
- ('open_window', 'Ok', 'gtk-ok', True)
- ]
- }
- },
- 'open_window': {
- 'actions': [],
- 'result': {'type': 'action', 'action': _action_module_open, 'state':'end'}
- }
- }
-wizard_update_module('module.module.update')
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-