summaryrefslogtreecommitdiff
path: root/odoo
diff options
context:
space:
mode:
authorBenoit <benoit.guillot@akretion.com>2018-06-07 16:56:53 +0200
committerRaphael Collet <rco@odoo.com>2018-08-20 13:56:29 +0200
commit03395ea103f1e933576bad2a32ae7842818e7dfd (patch)
treee7806992084154fdce6b03b0e72596d3396d81d5 /odoo
parent48b492b086cf4a07c28be7c0686b63785376de3c (diff)
[FIX] manual creation of serialized field from the interface
Diffstat (limited to 'odoo')
-rw-r--r--odoo/addons/base/ir/ir_model.py2
-rw-r--r--odoo/modules/registry.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/odoo/addons/base/ir/ir_model.py b/odoo/addons/base/ir/ir_model.py
index 2a1eb0fad37..ec58bf422ac 100644
--- a/odoo/addons/base/ir/ir_model.py
+++ b/odoo/addons/base/ir/ir_model.py
@@ -695,6 +695,8 @@ class IrModelFields(models.Model):
# add compute function if given
if field_data['compute']:
attrs['compute'] = make_compute(field_data['compute'], field_data['depends'])
+ if field_data.get('sparse'):
+ attrs['sparse'] = field_data['sparse']
return fields.Field.by_type[field_data['ttype']](**attrs)
diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py
index 7bdff852c67..60db60cdd50 100644
--- a/odoo/modules/registry.py
+++ b/odoo/modules/registry.py
@@ -212,9 +212,15 @@ class Registry(Mapping):
if self._fields_by_model is None:
# Query manual fields for all models at once
self._fields_by_model = dic = defaultdict(dict)
+ id2name = {}
cr.execute('SELECT * FROM ir_model_fields WHERE state=%s', ('manual',))
for field in cr.dictfetchall():
dic[field['model']][field['name']] = field
+ id2name[field['id']] = field['name']
+ # compute the attribute 'sparse'
+ for fields in dic.values():
+ for name, field in fields.items():
+ field['sparse'] = id2name.get(field['serialization_field_id'])
return self._fields_by_model[model_name]
def do_parent_store(self, cr):