2 Install OpenERP on a new (by default) database.
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):
14 db = openerp.sql_db.db_connect('template1')
15 cr = db.cursor() # TODO `with db as cr:`
18 cr.execute("""CREATE DATABASE "%s"
19 ENCODING 'unicode' TEMPLATE "template1" """ \
30 config = openerp.tools.config
31 config['log_handler'] = [':CRITICAL']
33 args.addons = args.addons.split(':')
36 config['addons_path'] = ','.join(args.addons)
37 openerp.netsvc.init_logger()
39 # Install the import hook, to import openerp.addons.<module>.
40 openerp.modules.module.initialize_sys_path()
41 openerp.modules.loading.open_openerp_namespace()
43 registry = openerp.modules.registry.RegistryManager.get(
44 args.database, update_module=False)
46 ir_module_module = registry.get('ir.module.module')
47 cr = registry.db.cursor() # TODO context manager
49 ids = ir_module_module.search(cr, openerp.SUPERUSER_ID, [('name', 'in', args.module), ('state', '=', 'installed')], {})
50 if len(ids) == len(args.module):
51 ir_module_module.button_immediate_uninstall(cr, openerp.SUPERUSER_ID, ids, {})
53 print "At least one module not found (database `%s`)." % (args.database,)
57 def add_parser(subparsers):
58 parser = subparsers.add_parser('uninstall',
59 description='Uninstall some modules from an OpenERP database.')
60 parser.add_argument('-d', '--database', metavar='DATABASE',
61 **common.required_or_default('DATABASE', 'the database to modify'))
62 common.add_addons_argument(parser)
63 parser.add_argument('--module', metavar='MODULE', action='append',
64 help='specify a module to uninstall'
65 ' (this option can be repeated)')
67 parser.set_defaults(run=run)