diff options
| author | Raphael Collet <rco@odoo.com> | 2020-04-02 06:45:54 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-04-03 11:40:28 +0000 |
| commit | 0551e7ad54bea744fc546682a0070327807d5e36 (patch) | |
| tree | 5143cb66e4975c15324c18731dd8e5d7889aeebf /odoo/modules | |
| parent | 8b94e53084db3d32ec738f4fbf5639e8b6053bb5 (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.py | 20 |
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`. """ |
