From 09ac82732a7a09332c72f7c89fee96fdb2e9e269 Mon Sep 17 00:00:00 2001 From: DiG Date: Mon, 17 Jan 2022 15:20:25 +0100 Subject: [PATCH] WIP lookup commands --- odoo-rpc.py | 64 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/odoo-rpc.py b/odoo-rpc.py index d17bb93..64f965b 100755 --- a/odoo-rpc.py +++ b/odoo-rpc.py @@ -336,32 +336,52 @@ def lookup( model, domains ): def flatten_stack( data ): flat = [] - if type(data) == str: - return [ data ] + def flatten( obj ): + if type(obj) == dict: + key = obj.keys()[0] + flat += [key] + for field in obj[key].keys(): + flatten( obj[key][field] ) + + if type(obj) == list: + for item in obj: + if type(item) == str: + flat += [item] + if type(item) == dict: + flatten( item ) + + if type(obj) == str: - if type(data) == list: - res = [ flatten_stack( sub ) for sub in data ] - flat_list = [item for sublist in res for item in sublist] - for item in flat_list: - flat += item - return flat + for obj in data: + flatten( obj ) + + return flat + # if type(data) == str: + # return [ data ] - if type(data) == dict: - for key in data.keys(): - if '/' in key: - flat.append(key) - # if type(data[key]) != dict: - # flat.append(key) - # else: - if type(data[key]) in [list,dict]: - res = flatten_stack(data[key]) - for item in res: - flat += item - return flat + # if type(data) == list: + # res = [ flatten_stack( sub ) for sub in data ] + # flat_list = [item for sublist in res for item in sublist] + # for item in flat_list: + # flat += item + # return flat + + # if type(data) == dict: + # for key in data.keys(): + # if '/' in key: + # flat.append(key) + # # if type(data[key]) != dict: + # # flat.append(key) + # # else: + # if type(data[key]) in [list,dict]: + # res = flatten_stack(data[key]) + # for item in res: + # flat += item + # return flat # jlog( flat ) - return flat - # return list(flatten(flat)) + # return flat + # # return list(flatten(flat))