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
commit892e3df7010729da96278becbec29d7fe1f0985d (patch)
tree3b62bc4667b3427aa0ccd7ad50311193843017ed /odoo/modules
parent0551e7ad54bea744fc546682a0070327807d5e36 (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.py16
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 = {}