[IMP] minor improvement in RegistryManager, useful for web client
bzr revid: nicolas.vanhoren@openerp.com-20130619105335-w3xftm6g0llh1ade
This commit is contained in:
parent
58e757e074
commit
ac1d0742a0
|
@ -286,6 +286,14 @@ class RegistryManager(object):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_registry_signaling(cls, db_name):
|
def check_registry_signaling(cls, db_name):
|
||||||
|
"""
|
||||||
|
Check if the modules have changed and performs all necessary operations to update
|
||||||
|
the registry of the corresponding database.
|
||||||
|
|
||||||
|
|
||||||
|
:returns: True if changes has been detected in the database and False otherwise.
|
||||||
|
"""
|
||||||
|
changed = False
|
||||||
if openerp.multi_process and db_name in cls.registries:
|
if openerp.multi_process and db_name in cls.registries:
|
||||||
registry = cls.get(db_name)
|
registry = cls.get(db_name)
|
||||||
cr = registry.db.cursor()
|
cr = registry.db.cursor()
|
||||||
|
@ -298,6 +306,7 @@ class RegistryManager(object):
|
||||||
# Check if the model registry must be reloaded (e.g. after the
|
# Check if the model registry must be reloaded (e.g. after the
|
||||||
# database has been updated by another process).
|
# database has been updated by another process).
|
||||||
if registry.base_registry_signaling_sequence != r:
|
if registry.base_registry_signaling_sequence != r:
|
||||||
|
changed = True
|
||||||
_logger.info("Reloading the model registry after database signaling.")
|
_logger.info("Reloading the model registry after database signaling.")
|
||||||
registry = cls.new(db_name)
|
registry = cls.new(db_name)
|
||||||
registry.base_registry_signaling_sequence = r
|
registry.base_registry_signaling_sequence = r
|
||||||
|
@ -305,6 +314,7 @@ class RegistryManager(object):
|
||||||
# occured on another process). Don't clear right after a registry
|
# occured on another process). Don't clear right after a registry
|
||||||
# has been reload.
|
# has been reload.
|
||||||
elif registry.base_cache_signaling_sequence != c:
|
elif registry.base_cache_signaling_sequence != c:
|
||||||
|
changed = True
|
||||||
_logger.info("Invalidating all model caches after database signaling.")
|
_logger.info("Invalidating all model caches after database signaling.")
|
||||||
registry.base_cache_signaling_sequence = c
|
registry.base_cache_signaling_sequence = c
|
||||||
registry.clear_caches()
|
registry.clear_caches()
|
||||||
|
@ -318,6 +328,7 @@ class RegistryManager(object):
|
||||||
column.digits_change(cr)
|
column.digits_change(cr)
|
||||||
finally:
|
finally:
|
||||||
cr.close()
|
cr.close()
|
||||||
|
return changed
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def signal_caches_change(cls, db_name):
|
def signal_caches_change(cls, db_name):
|
||||||
|
|
Loading…
Reference in New Issue