From a9062e44557cfdf6904488e7df65ade387154be0 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 12 Jan 2012 12:34:07 +0530 Subject: [PATCH] doclist compress fix: now scans all docs for preparing keylist --- py/webnotes/model/utils.py | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/py/webnotes/model/utils.py b/py/webnotes/model/utils.py index ff9307e63e..345656bcd6 100644 --- a/py/webnotes/model/utils.py +++ b/py/webnotes/model/utils.py @@ -32,31 +32,32 @@ def compress(doclist): docs = doclist kl, vl = {}, [] + forbidden = ['server_code_compiled'] + + # scan for keys & values for d in docs: dt = d['doctype'] if not (dt in kl.keys()): - fl = d.keys() - forbidden = ['server_code_compiled'] - nl = ['doctype','localname','__oldparent','__unsaved'] + kl[dt] = ['doctype','localname','__oldparent','__unsaved'] - # add client script for doctype, doctype due to ambiguity - if dt=='DocType': nl.append('__client_script') + # add client script for doctype, doctype due to ambiguity + if dt=='DocType' and '__client_script' not in kl[dt]: + kl[dt].append('__client_script') - for f in fl: - if not (f in nl) and not (f in forbidden): - nl.append(f) - kl[dt] = nl + for f in d.keys(): + if not (f in kl[dt]) and not (f in forbidden): + # if key missing, then append + kl[dt].append(f) - ## values - fl = kl[dt] - nl = [] - for f in fl: + # build values + tmp = [] + for f in kl[dt]: v = d.get(f) - if type(v)==long: v=int(v) - nl.append(v) - vl.append(nl) + tmp.append(v) + + vl.append(tmp) #errprint(str({'_vl':vl,'_kl':kl})) return {'_vl':vl,'_kl':kl}