diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index cc3bdc2ce7b..0c591f9ca4f 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -757,16 +757,21 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): return has_updates +def _check_module_names(cr, module_names): + mod_names = set(module_names) + if 'base' in mod_names: + # ignore dummy 'all' module + if 'all' in mod_names: + mod_names.remove('all') + if mod_names: + cr.execute("SELECT count(id) AS count FROM ir_module_module WHERE name in %s", (tuple(mod_names),)) + if cr.dictfetchone()['count'] != len(mod_names): + # find out what module name(s) are incorrect: + cr.execute("SELECT name FROM ir_module_module") + incorrect_names = mod_names.difference([x['name'] for x in cr.dictfetchall()]) + logging.getLogger('init').warning('invalid module names, ignored: %s', ", ".join(incorrect_names)) + def load_modules(db, force_demo=False, status=None, update_module=False): - - def check_module_name(cr, mods, state): - for mod in mods: - id = modobj.search(cr, 1, ['&', ('state', '=', state), ('name', '=', mod)]) - if id: - getattr(modobj, states[state])(cr, 1, id) - elif mod != 'all': - logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: invalid module name!' % (mod)) - if not status: status = {} cr = db.cursor() @@ -795,16 +800,23 @@ def load_modules(db, force_demo=False, status=None, update_module=False): if update_module: modobj = pool.get('ir.module.module') - states = {'installed': 'button_upgrade', 'uninstalled': 'button_install'} logger.notifyChannel('init', netsvc.LOG_INFO, 'updating modules list') if ('base' in tools.config['init']) or ('base' in tools.config['update']): modobj.update_list(cr, 1) + _check_module_names(cr, itertools.chain(tools.config['init'].keys(), tools.config['update'].keys())) + mods = [k for k in tools.config['init'] if tools.config['init'][k]] - check_module_name(cr, mods, 'uninstalled') + if mods: + ids = modobj.search(cr, 1, ['&', ('state', '=', 'uninstalled'), ('name', 'in', mods)]) + if ids: + modobj.button_install(cr, 1, ids) mods = [k for k in tools.config['update'] if tools.config['update'][k]] - check_module_name(cr, mods, 'installed') + if mods: + ids = modobj.search(cr, 1, ['&', ('state', '=', 'installed'), ('name', 'in', mods)]) + if ids: + modobj.button_upgrade(cr, 1, ids) cr.execute("update ir_module_module set state=%s where name=%s", ('installed', 'base')) diff --git a/bin/addons/base/__openerp__.py b/bin/addons/base/__openerp__.py index 5f7fade6309..47a36987b48 100644 --- a/bin/addons/base/__openerp__.py +++ b/bin/addons/base/__openerp__.py @@ -52,7 +52,7 @@ 'module/wizard/base_language_install_view.xml', 'module/wizard/base_import_language_view.xml', 'module/wizard/base_module_upgrade_view.xml', - #TODO: 'module/wizard/base_module_configuration_view.xml', + 'module/wizard/base_module_configuration_view.xml', 'module/wizard/base_export_language_view.xml', 'module/wizard/base_update_translations_view.xml', 'res/res_request_view.xml', diff --git a/bin/addons/base/base_data.xml b/bin/addons/base/base_data.xml index 2866c1ea31b..5082adfbfe0 100644 --- a/bin/addons/base/base_data.xml +++ b/bin/addons/base/base_data.xml @@ -1335,8 +1335,8 @@ - INR - Rs + Rs + INR Rs 0.01 4 diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index eac674f3e77..e76af79ea01 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -1906,11 +1906,10 @@ + - -