summaryrefslogtreecommitdiff
path: root/odoo/modules
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2020-04-02 06:45:54 +0000
committerRaphael Collet <rco@odoo.com>2020-04-03 11:40:28 +0000
commit0551e7ad54bea744fc546682a0070327807d5e36 (patch)
tree5143cb66e4975c15324c18731dd8e5d7889aeebf /odoo/modules
parent8b94e53084db3d32ec738f4fbf5639e8b6053bb5 (diff)
[IMP] core: compute field triggers lazily on registry
This saves 2% of the total installation time. X-original-commit: 6a0028f91944b1d9e4eac026e86ca249ef5bc7ee
Diffstat (limited to 'odoo/modules')
-rw-r--r--odoo/modules/registry.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py
index c4bc64adfe2..ec07606d6f9 100644
--- a/odoo/modules/registry.py
+++ b/odoo/modules/registry.py
@@ -261,16 +261,23 @@ class Registry(Mapping):
for model in models:
model._setup_fields()
+ for model in models:
+ model._setup_complete()
+
+ self.registry_invalidated = True
+
+ @lazy_property
+ def field_triggers(self):
# determine field dependencies
dependencies = {}
- for model in models:
- if model._abstract:
+ for Model in self.models.values():
+ if Model._abstract:
continue
- for field in model._fields.values():
+ for field in Model._fields.values():
# dependencies of custom fields may not exist; ignore that case
exceptions = (Exception,) if field.base_field.manual else ()
with ignore(*exceptions):
- dependencies[field] = set(field.resolve_depends(model))
+ dependencies[field] = set(field.resolve_depends(self))
# determine transitive dependencies
def transitive_dependencies(field, seen=[]):
@@ -299,10 +306,7 @@ class Registry(Mapping):
tree = tree.setdefault(label, {})
tree.setdefault(None, set()).add(field)
- self.field_triggers = triggers
-
- for model in models:
- model._setup_complete()
+ return triggers
def post_init(self, func, *args, **kwargs):
""" Register a function to call at the end of :meth:`~.init_models`. """