Merge pull request #404 from odoo-dev/7.0-norecomputestoredm2ofuncfields-chs

[FIX] orm: do not recompute m2o stored function field at read.
This commit is contained in:
Martin Trigaux 2014-06-06 13:55:59 +02:00
commit 548c8e6675
1 changed files with 10 additions and 2 deletions

View File

@ -1142,9 +1142,17 @@ class function(_column):
return result
def get(self, cr, obj, ids, name, uid=False, context=None, values=None):
result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
multi = self._multi
# if we already have a value, don't recompute it.
# This happen if case of stored many2one fields
if values and not multi and name in values[0]:
result = {v['id']: v[name] for v in values}
elif values and multi and all(n in values[0] for n in name):
result = {v['id']: dict({n: v[n]} for n in name) for v in values}
else:
result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
for id in ids:
if self._multi and id in result:
if multi and id in result:
for field, value in result[id].iteritems():
if value:
result[id][field] = self.postprocess(cr, uid, obj, field, value, context)