10 # TODO provide a --rpc flag to use XML-RPC (with a specific username) instead
11 # of server-side library.
16 config = openerp.tools.config
17 config['log_handler'] = [':CRITICAL']
18 common.set_addons(args)
19 openerp.netsvc.init_logger()
20 registry = openerp.modules.registry.RegistryManager.get(
21 args.database, update_module=False)
22 model = registry[args.model]
23 cr = registry.db.cursor() # TODO context manager
24 field_names = [args.field] if args.field else []
27 field_names = ['name']
29 xs = model.read(cr, 1, args.id, field_names, {})
34 print "Records (model `%s`, database `%s`):" % (args.model, args.database)
37 print str(x['id']) + '.', x['name']
40 for k, v in x.items():
41 longest_k = len(k) if longest_k < len(k) else longest_k
42 for k, v in sorted(x.items()):
43 print (k + ':').ljust(longest_k + 2), v
45 print "Record not found."
47 def add_parser(subparsers):
48 parser = subparsers.add_parser('read',
49 description='Display a record.')
50 parser.add_argument('-d', '--database', metavar='DATABASE',
51 **common.required_or_default('DATABASE', 'the database to connect to'))
52 common.add_addons_argument(parser)
53 parser.add_argument('-m', '--model', metavar='MODEL', required=True,
54 help='the model for which a record should be read')
55 parser.add_argument('-i', '--id', metavar='RECORDID', required=True,
57 parser.add_argument('-v', '--verbose', action='store_true',
58 help='display more information')
59 parser.add_argument('--short', action='store_true',
60 help='display less information')
61 parser.add_argument('-f', '--field', metavar='FIELD',
62 help='display information only for this particular field')
64 parser.set_defaults(run=run)