diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index a5f8a848705..090fc0c5526 100644 --- a/openerp/addons/base/__openerp__.py +++ b/openerp/addons/base/__openerp__.py @@ -56,6 +56,7 @@ 'module/wizard/base_module_configuration_view.xml', 'module/wizard/base_export_language_view.xml', 'module/wizard/base_update_translations_view.xml', + 'module/wizard/base_module_immediate_install.xml', 'res/res_company_view.xml', 'res/res_request_view.xml', 'res/res_lang_view.xml', diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po index 818bd5c4602..45560f7e363 100644 --- a/openerp/addons/base/i18n/nl.po +++ b/openerp/addons/base/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-02-19 13:01+0000\n" +"PO-Revision-Date: 2012-08-09 06:15+0000\n" "Last-Translator: Erwin \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-07-19 04:38+0000\n" -"X-Generator: Launchpad (build 15637)\n" +"X-Launchpad-Export-Date: 2012-08-10 04:58+0000\n" +"X-Generator: Launchpad (build 15761)\n" #. module: base #: model:res.country,name:base.sh @@ -1443,7 +1443,7 @@ msgstr "" "U kunt de navolgende extra data toevoegen aan een verkooporder:\n" "* Aanvraagdatum\n" "* Bevestigde datum\n" -"* Effectieve datum\n" +"* Boek datum\n" #. module: base #: model:ir.module.module,shortdesc:base.module_account_sequence @@ -8110,7 +8110,7 @@ msgstr "Kenmerk" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic msgid "Analytic Accounting" -msgstr "Kostenplaats boekhouding" +msgstr "Kostenplaatsen" #. module: base #: view:ir.actions.report.xml:0 diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index 49a65acebca..f7f67cf323f 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -177,8 +177,8 @@ class module(osv.osv): _columns = { 'name': fields.char("Technical Name", size=128, readonly=True, required=True, select=True), 'category_id': fields.many2one('ir.module.category', 'Category', readonly=True, select=True), - 'shortdesc': fields.char('Module Name', size=256, readonly=True, translate=True), - 'summary': fields.char('Summary', size=256, readonly=True, translate=True), + 'shortdesc': fields.char('Module Name', size=64, readonly=True, translate=True), + 'summary': fields.char('Summary', size=64, readonly=True, translate=True), 'description': fields.text("Description", readonly=True, translate=True), 'author': fields.char("Author", size=128, readonly=True), 'maintainer': fields.char('Maintainer', size=128, readonly=True), @@ -355,22 +355,7 @@ class module(osv.osv): :returns: next res.config item to execute :rtype: dict[str, object] """ - self.button_install(cr, uid, ids, context=context) - cr.commit() - _, pool = pooler.restart_pool(cr.dbname, update_module=True) - - config = pool.get('res.config').next(cr, uid, [], context=context) or {} - if config.get('type') not in ('ir.actions.reload', 'ir.actions.act_window_close'): - return config - - # reload the client; open the first available root menu - menu_obj = self.pool.get('ir.ui.menu') - menu_ids = menu_obj.search(cr, uid, [('parent_id', '=', False)], context=context) - return { - 'type': 'ir.actions.client', - 'tag': 'reload', - 'params': {'menu_id': menu_ids and menu_ids[0] or False}, - } + return self._button_immediate_function(cr, uid, ids, self.button_install, context=context) def button_install_cancel(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'state': 'uninstalled', 'demo':False}) @@ -415,8 +400,35 @@ class module(osv.osv): known_dep_ids, exclude_states,context)) return list(known_dep_ids) + def _button_immediate_function(self, cr, uid, ids, function, context=None): + function(cr, uid, ids, context=context) + + cr.commit() + _, pool = pooler.restart_pool(cr.dbname, update_module=True) + + config = pool.get('res.config').next(cr, uid, [], context=context) or {} + if config.get('type') not in ('ir.actions.reload', 'ir.actions.act_window_close'): + return config + + # reload the client; open the first available root menu + menu_obj = self.pool.get('ir.ui.menu') + menu_ids = menu_obj.search(cr, uid, [('parent_id', '=', False)], context=context) + + return { + 'type' : 'ir.actions.client', + 'tag' : 'reload', + 'params' : {'menu_id' : menu_ids and menu_ids[0] or False} + } + + def button_immediate_uninstall(self, cr, uid, ids, context=None): + """ + Uninstall the selected module(s) immediately and fully, + returns the next res.config action to execute + """ + return self._button_immediate_function(cr, uid, ids, self.button_uninstall, context=context) + def button_uninstall(self, cr, uid, ids, context=None): - if any(m.name == 'base' for m in self.browse(cr, uid, ids)): + if any(m.name == 'base' for m in self.browse(cr, uid, ids, context=context)): raise orm.except_orm(_('Error'), _("The `base` module cannot be uninstalled")) dep_ids = self.downstream_dependencies(cr, uid, ids, context=context) self.write(cr, uid, ids + dep_ids, {'state': 'to remove'}) @@ -426,6 +438,13 @@ class module(osv.osv): self.write(cr, uid, ids, {'state': 'installed'}) return True + def button_immediate_upgrade(self, cr, uid, ids, context=None): + """ + Upgrade the selected module(s) immediately and fully, + return the next res.config action to execute + """ + return self._button_immediate_function(cr, uid, ids, self.button_upgrade, context=context) + def button_upgrade(self, cr, uid, ids, context=None): depobj = self.pool.get('ir.module.module.dependency') todo = self.browse(cr, uid, ids, context=context) diff --git a/openerp/addons/base/module/module_view.xml b/openerp/addons/base/module/module_view.xml index 3eddea86e1f..6139895021b 100644 --- a/openerp/addons/base/module/module_view.xml +++ b/openerp/addons/base/module/module_view.xml @@ -117,8 +117,8 @@