[FIX] website_forum: fixed controller creating a new forum tha was crashing.
[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     field_names = [args.field] if args.field else []
24     if args.short:
25         # ignore --field
26         field_names = ['name']
27     with registry.cursor() as cr:
28         xs = model.read(cr, 1, args.id, field_names, {})
29
30     if xs:
31         print "Records (model `%s`, database `%s`):" % (args.model, args.database)
32         x = xs[0]
33         if args.short:
34             print str(x['id']) + '.', x['name']
35         else:
36             longest_k = 1
37             for k, v in x.items():
38                 longest_k = len(k) if longest_k < len(k) else longest_k
39             for k, v in sorted(x.items()):
40                 print (k + ':').ljust(longest_k + 2), v
41     else:
42         print "Record not found."
43
44 def add_parser(subparsers):
45     parser = subparsers.add_parser('read',
46         description='Display a record.')
47     parser.add_argument('-d', '--database', metavar='DATABASE',
48         **common.required_or_default('DATABASE', 'the database to connect to'))
49     common.add_addons_argument(parser)
50     parser.add_argument('-m', '--model', metavar='MODEL', required=True,
51         help='the model for which a record should be read')
52     parser.add_argument('-i', '--id', metavar='RECORDID', required=True,
53         help='the record id')
54     parser.add_argument('-v', '--verbose', action='store_true',
55         help='display more information')
56     parser.add_argument('--short', action='store_true',
57         help='display less information')
58     parser.add_argument('-f', '--field', metavar='FIELD',
59         help='display information only for this particular field')
60
61     parser.set_defaults(run=run)