[FIX] website_mail_group: restore missing snippet icon
[odoo/odoo.git] / openerpcommand / uninstall.py
1 """
2 Install OpenERP on a new (by default) database.
3 """
4 import os
5 import sys
6
7 import common
8
9 # TODO turn template1 in a parameter
10 # This should be exposed from openerp (currently in
11 # openerp/service/web_services.py).
12 def create_database(database_name):
13     import openerp
14     db = openerp.sql_db.db_connect('template1')
15     cr = db.cursor() # TODO `with db as cr:`
16     try:
17         cr.autocommit(True)
18         cr.execute("""CREATE DATABASE "%s"
19             ENCODING 'unicode' TEMPLATE "template1" """ \
20             % (database_name,))
21     finally:
22         cr.close()
23
24 def run(args):
25     assert args.database
26     assert args.module
27
28     import openerp
29
30     config = openerp.tools.config
31     config['log_handler'] = [':CRITICAL']
32     if args.addons:
33         args.addons = args.addons.split(':')
34     else:
35         args.addons = []
36     config['addons_path'] = ','.join(args.addons)
37     openerp.netsvc.init_logger()
38
39     # Install the import hook, to import openerp.addons.<module>.
40     openerp.modules.module.initialize_sys_path()
41
42     registry = openerp.modules.registry.RegistryManager.get(
43         args.database, update_module=False)
44
45     ir_module_module = registry.get('ir.module.module')
46     with registry.cursor() as cr:
47         ids = ir_module_module.search(cr, openerp.SUPERUSER_ID, [('name', 'in', args.module), ('state', '=', 'installed')], {})
48         if len(ids) == len(args.module):
49             ir_module_module.button_immediate_uninstall(cr, openerp.SUPERUSER_ID, ids, {})
50         else:
51             print "At least one module not found (database `%s`)." % (args.database,)
52
53 def add_parser(subparsers):
54     parser = subparsers.add_parser('uninstall',
55         description='Uninstall some modules from an OpenERP database.')
56     parser.add_argument('-d', '--database', metavar='DATABASE',
57         **common.required_or_default('DATABASE', 'the database to modify'))
58     common.add_addons_argument(parser)
59     parser.add_argument('--module', metavar='MODULE', action='append',
60         help='specify a module to uninstall'
61         ' (this option can be repeated)')
62
63     parser.set_defaults(run=run)