Merge lp:~openerp-dev/openobject-server/trunk-function-getter-assertion-cto into lp:openobject-server

Proposed by Samus CTO (OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-server/trunk-function-getter-assertion-cto
Merge into: lp:openobject-server
Diff against target: 12 lines (+2/-0)
1 file modified
openerp/osv/fields.py (+2/-0)
To merge this branch: bzr merge lp:~openerp-dev/openobject-server/trunk-function-getter-assertion-cto
Reviewer Review Type Date Requested Status
Olivier Dony (Odoo) Pending
Review via email: mp+165602@code.launchpad.net

Description of the change

Hello odo,

I made the improvement we talked a long ago.

There is finally 2 checks:
 - one to check if some ids are missing in the result
 - one to check if there is not too many ids

Maybe it is better to put a warning in the second case? I don't think so (because it permit less optimized codes).

Let me know if this improvement is correct or not.

To post a comment you must log in.

Unmerged revisions

4876. By Samus CTO (OpenERP)

[IMP] Getter method of function field now check if all requested ids are present in the result

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openerp/osv/fields.py'
2--- openerp/osv/fields.py 2013-03-29 14:07:23 +0000
3+++ openerp/osv/fields.py 2013-05-24 13:37:36 +0000
4@@ -1130,6 +1130,8 @@
5
6 def get(self, cr, obj, ids, name, uid=False, context=None, values=None):
7 result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
8+ assert set(ids) - set(result.keys()) == set(), "The function field %s of object %s didn't return a dict with all the requested values for ids: %s!" % (name, obj._name, ids)
9+ assert set(ids) == set(result.keys()), "The function field %s of object %s returned too much values when requested these ids: %s!" % (name, obj._name, ids)
10 for id in ids:
11 if self._multi and id in result:
12 for field, value in result[id].iteritems():