Cecile Tonglet (OpenERP) has proposed merging
lp:~openerp-dev/openobject-server/trunk-bug-821583-cto into
lp:openobject-server.
Requested reviews:
OpenERP Core Team (openerp)
Related bugs:
Bug #821583 in OpenERP Server: "many2one function fields are recomputed every
time even with store=True"
https://bugs.launchpad.net/openobject-server/+bug/821583
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bug-821583-cto/+merge/94245
Prevent get to call many2one functions if store=True at each read
--
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bug-821583-cto/+merge/94245
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-server/trunk-bug-821583-cto.
=== modified file 'openerp/osv/fields.py'
--- openerp/osv/fields.py 2012-02-15 13:37:48 +0000
+++ openerp/osv/fields.py 2012-02-22 18:28:26 +0000
@@ -1121,7 +1121,15 @@
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)
+ if self._multi:
+ result = dict([v['id'], v] for v in values) if values else {}
+ ids_missing = [id for id in ids if \
+ not all(result.get(id, {}).get(n) for n in name)]
+ else:
+ result = dict([v['id'], v.get(name)] for v in values) if values else {}
+ ids_missing = [id for id in ids if not result.get(id)]
+ if ids_missing:
+ result.update(self._fnct(obj, cr, uid, ids_missing, name, self._arg, context))
for id in ids:
if self._multi and id in result:
for field, value in result[id].iteritems():
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp