[FIX] gamification: correct name of ir.rule fixing bad copy-paste
[odoo/odoo.git] / openerpcommand / read.py
1 """
2 Read a record.
3 """
4 import os
5 import sys
6 import textwrap
7
8 import common
9
10 # TODO provide a --rpc flag to use XML-RPC (with a specific username) instead
11 # of server-side library.
12 def run(args):
13     assert args.database
14     assert args.model
15     import openerp
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 []
25     if args.short:
26         # ignore --field
27         field_names = ['name']
28     try:
29         xs = model.read(cr, 1, args.id, field_names, {})
30     finally:
31         cr.close()
32
33     if xs:
34         print "Records (model `%s`, database `%s`):" % (args.model, args.database)
35         x = xs[0]
36         if args.short:
37             print str(x['id']) + '.', x['name']
38         else:
39             longest_k = 1
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
44     else:
45         print "Record not found."
46
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,
56         help='the record id')
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')
63
64     parser.set_defaults(run=run)