diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py index 3b11219d5a5..b9762200a97 100644 --- a/openerp/modules/registry.py +++ b/openerp/modules/registry.py @@ -90,7 +90,7 @@ class RegistryManager(object): cr = db.cursor() try: - pool.init_set(cr, False) + pool.do_parent_store(cr) pool.get('ir.actions.report.xml').register_all(cr) cr.commit() finally: diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 83cf852fcdd..4493440c936 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -639,7 +639,6 @@ class orm_template(object): def __init__(self, pool, cr): """ Initialize a model and make it part of the given registry.""" - pool.add(self._name, self) self.pool = pool if not self._name and not hasattr(self, '_inherit'): diff --git a/openerp/osv/osv.py b/openerp/osv/osv.py index 59766d2b0e7..40b448fcd82 100644 --- a/openerp/osv/osv.py +++ b/openerp/osv/osv.py @@ -117,7 +117,7 @@ class object_proxy(netsvc.Service): return tr(src, 'code') try: - if not pooler.get_pool(dbname)._ready: + if pooler.get_pool(dbname)._init: raise except_osv('Database not ready', 'Currently, this database is not fully loaded and can not be used.') return f(self, dbname, *args, **kwargs) except orm.except_orm, inst: @@ -212,25 +212,16 @@ class osv_pool(object): """ def __init__(self): - self._ready = False self.obj_pool = {} # model name/model instance mapping self._sql_error = {} self._store_function = {} self._init = True self._init_parent = {} - def init_set(self, cr, mode): - different = mode != self._init - if different: - if mode: - self._init_parent = {} - if not mode: - for o in self._init_parent: - self.get(o)._parent_store_compute(cr) - self._init = mode - - self._ready = True - return different + def do_parent_store(self, cr): + for o in self._init_parent: + self.get(o)._parent_store_compute(cr) + self._init = False def obj_list(self): """ Return the list of model names in this registry.""" @@ -249,9 +240,12 @@ class osv_pool(object): res = [] - # instanciate classes registered through their constructor + # Instanciate classes registered through their constructor and + # add them to the pool. for klass in module_class_list.get(module, []): - res.append(klass.createInstance(self, module, cr)) + inst = klass.createInstance(self, module, cr) + self.add(inst._name, inst) + res.append(inst) return res