summaryrefslogtreecommitdiff
path: root/odoo/api.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-02-20 13:40:48 +0100
committerChristophe Simonis <chs@odoo.com>2019-02-20 13:40:48 +0100
commitf1ff55bca1242af86cd5feedbf7c4793b96174a1 (patch)
tree164453a9cf678e004c2ae82819c51fbd57c0b6ae /odoo/api.py
parent716a272480e649db721c081605368e1bccf8dc91 (diff)
parentde8cefcef4d456398e5028c52e3bd9db807e5f8a (diff)
[MERGE] forward port branch 11.0 up to de8cefcef4d
Diffstat (limited to 'odoo/api.py')
-rw-r--r--odoo/api.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/odoo/api.py b/odoo/api.py
index 9b904c497f3..f8332a8c762 100644
--- a/odoo/api.py
+++ b/odoo/api.py
@@ -55,7 +55,7 @@ from weakref import WeakSet
from decorator import decorator
from werkzeug.local import Local, release_local
-from odoo.tools import frozendict, classproperty, StackMap
+from odoo.tools import frozendict, classproperty, StackMap, pycompat
_logger = logging.getLogger(__name__)
@@ -965,13 +965,18 @@ class Cache(object):
def get(self, record, field):
""" Return the value of ``field`` for ``record``. """
key = record.env.cache_key(field)
- value = self._data[key][field][record.id]
+ value = self._data[key][field][record._ids[0]]
return value.get() if isinstance(value, SpecialValue) else value
def set(self, record, field, value):
""" Set the value of ``field`` for ``record``. """
key = record.env.cache_key(field)
- self._data[key][field][record.id] = value
+ self._data[key][field][record._ids[0]] = value
+
+ def update(self, records, field, values):
+ """ Set the values of ``field`` for several ``records``. """
+ key = records.env.cache_key(field)
+ self._data[key][field].update(pycompat.izip(records._ids, values))
def remove(self, record, field):
""" Remove the value of ``field`` for ``record``. """