Added lookup command

This commit is contained in:
DiG 2022-01-14 19:49:59 +01:00
parent c8f8a5fff3
commit 275e1943eb
1 changed files with 67 additions and 8 deletions

View File

@ -200,20 +200,74 @@ def login( server = None, port = None, db = None, user = None, passwd = None ):
def search( model, domains ):
Model = odoo.env[model]
ids = Model.search( domains )
render_tsv( model, Model.browse(ids) )
# render_tsv( model, Model.browse(ids) )
# print( 'id', 'name', sep='\t' )
# for inst in Model.browse( ids ):
# render_tsv( model, inst )
def fields( model, domains ):
Model = odoo.env['ir.model.fields']
ids = Model.search([( 'model_id.model', '=', MODEL )])
render_tsv( MODEL, Model.browse(ids) )
ids = Model.search([( 'model_id.model', '=', model )])
render_tsv( model, Model.browse(ids) )
stack = []
current_exports = []
def json_path( model, id ):
return "%s/%s/%s.json" % ( FOLDER, model, id )
def lookup( model, domains ):
print( "> Lookup: %s %s" % (model,domains) )
if model in MODEL_IGNORE:
print( 'IGNORED' )
return
Model = odoo.env[model]
ids = Model.search( domains )
rfields = rel_fields( model )
eprint( rfields )
for inst in Model.browse( ids ):
data = inst.read()[0]
size = len( json.dumps(data, indent=4) )
filename = json_path( model, inst.id )
if filename in stack:
continue
# print( 'Preparing data for %s' % (filename) )
stack.append({ 'model': model, 'id': inst.id, 'file': filename, 'data': size })
for field in rfields:
#data[field.name] = inst[field.name].read()[0]
#eprint( data[field.name] )
if field.relation in MODEL_IGNORE:
continue
if data[field.name]:
tsv( 'Field: ', field.ttype, field.name, field.relation, data[field.name] )
if field.ttype == 'many2one':
id = data[field.name][0]
_filename = json_path( field.relation, id )
print( field.ttype, field.relation, id, _filename )
if not os.path.exists( _filename ):
lookup( field.relation, [('id','=',id)] )
else:
print('Already exists %s' % (_filename) )
if field.ttype == 'one2many':
for id in data[field.name]:
_filename = json_path( field.relation, id )
print( field.ttype, field.relation, id, _filename )
if not os.path.exists( _filename ):
lookup( field.relation, [('id','=',id)] )
else:
print('Already exists %s' % (_filename) )
print( stack )
def export_json( model, domains ):
print( "Export to json: %s %s" % (model,domains) )
print( "> Export to json: %s %s" % (model,domains) )
if model in MODEL_IGNORE:
print( 'IGNORED' )
return
@ -286,21 +340,26 @@ if MODEL in odoo.env:
if METHOD == 'search':
search( MODEL, args2domains(sys.argv[3:]) )
#ids = Model.search( args2domains(sys.argv[3:]) )
# render_tsv( odoo.env[MODEL].browse( odoo.env[MODEL].search( args2domains(PARAMS[2:]) ) ) )
search( MODEL, args2domains(PARAMS[2:]) )
render_tsv( model, Model.browse(ids) )
#ids = Model.search( args2domains(PARAMS[2:]) )
#print( 'id', 'name', sep='\t' )
#for inst in Model.browse( ids ):
# render_tsv( MODEL, inst )
if METHOD == 'browse':
ids = sys.argv[3:]
ids = PARAMS[2:]
ids = [ int(s) for s in ids ]
#print( ids )
for inst in Model.browse( ids ):
jlog( inst.read()[0] )
if METHOD == 'lookup':
lookup( MODEL, args2domains(PARAMS[2:]) )
if METHOD == 'export-json':
export_json( MODEL, args2domains(sys.argv[3:]) )
export_json( MODEL, args2domains(PARAMS[2:]) )
if METHOD == 'fields_get':
jlog( Model.fields_get() )