From a4b93b2a4d6cc30c53bc39d9b7773bca03cb915b Mon Sep 17 00:00:00 2001 From: qdp Date: Wed, 18 Feb 2009 15:24:54 +0100 Subject: [PATCH] [FIX] bugfixed the order of computing records for store={} fields. There was a problem for fields that were dependant on same object like the membership_state field on res_partner that depend on free_member field of res_partner: store = { 'account.invoice':(_get_invoice_partner,['state'], 10), 'membership.membership_line':(_get_partner_id,['state'], 10), 'res.partner':(_get_partners, ['free_member'], 10) } bzr revid: qdp@tinyerp.com-20090218142454-d9h6bdy4h3wwcj1i --- bin/osv/orm.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index 1a9b2cc3396..6644142517c 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -2491,15 +2491,20 @@ class orm(orm_template): for id in filter(None, ids2): result[fncts[fnct][0]].setdefault(id, []) result[fncts[fnct][0]][id].append(fnct) - result2 = [] + dict = {} for object in result: k2 = {} for id,fnct in result[object].items(): k2.setdefault(tuple(fnct), []) k2[tuple(fnct)].append(id) for fnct,id in k2.items(): - result2.append((fncts[fnct[0]][4],object,id,map(lambda x: fncts[x][1], fnct))) - result2.sort() + dict.setdefault(fncts[fnct[0]][4],[]) + dict[fncts[fnct[0]][4]].append((fncts[fnct[0]][4],object,id,map(lambda x: fncts[x][1], fnct))) + result2 = [] + tmp = dict.keys() + tmp.sort() + for k in tmp: + result2+=dict[k] return result2 def _store_set_values(self, cr, uid, ids, fields, context):