From b6dc5c430feb049e2d5c9ebb290e320e6d2bfcb0 Mon Sep 17 00:00:00 2001 From: DiG Date: Sun, 16 Jan 2022 13:44:50 +0100 Subject: [PATCH] WIP lookup one model --- odoo-rpc.py | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/odoo-rpc.py b/odoo-rpc.py index ec3ca6f..e7376e5 100755 --- a/odoo-rpc.py +++ b/odoo-rpc.py @@ -213,10 +213,38 @@ def fields( model, domains ): stack = [] current_exports = [] def json_path( model, id ): - return "%s/%s/%s.json" % ( FOLDER, model, id ) + return "%s/%s.json" % ( FOLDER, muid(model, id) ) +def muid( model, id ): + return "%s/%s" % ( model, id ) + +def lookup_model( muid ): + eprint( "> Lookup model: %s" % (muid) ) + _stack = [] + model, id = string.split( muid, '/' ) + if MODEL in odoo.env: + rfields = rel_fields( model ) + eprint( rfields ) + inst = odoo.env[model].browse( id ) + # data = inst.read()[0] + # size = len( json.dumps(data, indent=4) ) + # filename = json_path( model, inst.id ) + + for field in rfields: + # if data[field.name]: + print( getattr( inst, field.name ) ) + if getattr( inst, field.name ): + if field.ttype == 'many2one': + id = data[field.name][0] + _stack.append( muid(field.relation, id) ) + + if field.ttype == 'one2many': + for id in data[field.name]: + _stack.append( muid(field.relation, id) ) + + return _stack def lookup( model, domains ): - print( "> Lookup: %s %s" % (model,domains) ) + eprint( "> Lookup: %s %s" % (model,domains) ) if model in MODEL_IGNORE: print( 'IGNORED' ) return @@ -358,6 +386,9 @@ if MODEL in odoo.env: if METHOD == 'lookup': lookup( MODEL, args2domains(PARAMS[2:]) ) + if METHOD == 'lookup_model': + lookup_model( MODEL ) + if METHOD == 'export-json': export_json( MODEL, args2domains(PARAMS[2:]) )