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 | 892e3df7010729da96278becbec29d7fe1f0985d (patch) | |
| tree | 3b62bc4667b3427aa0ccd7ad50311193843017ed /odoo/modules | |
| parent | 0551e7ad54bea744fc546682a0070327807d5e36 (diff) | |
[IMP] core: compute field_computed lazily
This is a simple refactoring.
X-original-commit: 634775bff6d9eba9d4548cc801071a942895a719
Diffstat (limited to 'odoo/modules')
| -rw-r--r-- | odoo/modules/registry.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py index ec07606d6f9..843cc14d97c 100644 --- a/odoo/modules/registry.py +++ b/odoo/modules/registry.py @@ -267,6 +267,22 @@ class Registry(Mapping): self.registry_invalidated = True @lazy_property + def field_computed(self): + """ Return a dict mapping each field to the fields computed by the same method. """ + computed = {} + for Model in self.models.values(): + groups = defaultdict(list) + for field in Model._fields.values(): + if field.compute: + computed[field] = group = groups[field.compute] + group.append(field) + for fields in groups.values(): + if len({field.compute_sudo for field in fields}) > 1: + _logger.warning("%s: inconsistent 'compute_sudo' for computed fields: %s", + self._name, ", ".join(field.name for field in fields)) + return computed + + @lazy_property def field_triggers(self): # determine field dependencies dependencies = {} |
