diff options
Diffstat (limited to 'openerp/modules/loading.py')
| -rw-r--r-- | openerp/modules/loading.py | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py index 33475493115..29a7e3e68e6 100644 --- a/openerp/modules/loading.py +++ b/openerp/modules/loading.py @@ -125,13 +125,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= migrations = openerp.modules.migration.MigrationManager(cr, graph) _logger.info('loading %d modules...', len(graph)) - # Query manual fields for all models at once and save them on the registry - # so the initialization code for each model does not have to do it - # one model at a time. - registry.fields_by_model = {} - cr.execute('SELECT * FROM ir_model_fields WHERE state=%s', ('manual',)) - for field in cr.dictfetchall(): - registry.fields_by_model.setdefault(field['model'], []).append(field) + registry.clear_manual_fields() # register, instantiate and initialize models for each modules t0 = time.time() @@ -161,13 +155,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= registry.setup_models(cr, partial=True) init_module_models(cr, package.name, models) - # Can't put this line out of the loop: ir.module.module will be - # registered by init_module_models() above. - modobj = registry['ir.module.module'] - - if perform_checks: - modobj.check(cr, SUPERUSER_ID, [module_id]) - idref = {} mode = 'update' @@ -175,6 +162,13 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= mode = 'init' if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): + # Can't put this line out of the loop: ir.module.module will be + # registered by init_module_models() above. + modobj = registry['ir.module.module'] + + if perform_checks: + modobj.check(cr, SUPERUSER_ID, [module_id]) + if package.state=='to upgrade': # upgrading the module information modobj.write(cr, SUPERUSER_ID, [module_id], modobj.get_values_from_terp(package.data)) @@ -226,9 +220,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= _logger.log(25, "%s modules loaded in %.2fs, %s queries", len(graph), time.time() - t0, openerp.sql_db.sql_counter - t0_sql) - # The query won't be valid for models created later (i.e. custom model - # created after the registry has been loaded), so empty its result. - registry.fields_by_model = None + registry.clear_manual_fields() cr.commit() |
