diff options
Diffstat (limited to 'odoo/api.py')
| -rw-r--r-- | odoo/api.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/odoo/api.py b/odoo/api.py index cf56718b032..b6a7f1acb8a 100644 --- a/odoo/api.py +++ b/odoo/api.py @@ -827,6 +827,21 @@ class Cache(object): except KeyError: pass + def get_until_miss(self, records, field): + """ Return the cached values of ``field`` for ``records`` until a value is not found. """ + field_cache = self._data[field] + key = records.env.cache_key(field) if field.depends_context else None + vals = [] + for record_id in records._ids: + try: + if key is not None: + vals.append(field_cache[record_id][key]) + else: + vals.append(field_cache[record_id]) + except KeyError: + break + return vals + def get_records_different_from(self, records, field, value): """ Return the subset of ``records`` that has not ``value`` for ``field``. """ field_cache = self._data[field] |
