Skip to content

Instantly share code, notes, and snippets.

@yasmanycastillo
Forked from sebalix/bootstrap-db.py
Created January 10, 2018 16:42
Show Gist options
  • Save yasmanycastillo/fafa7c243165bef85f458138398b5d43 to your computer and use it in GitHub Desktop.
Save yasmanycastillo/fafa7c243165bef85f458138398b5d43 to your computer and use it in GitHub Desktop.
Bootstraping Odoo database (8.0)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Script to bootstrap an Odoo database (8.0)."""
import odoorpc
# Odoo connection
SUPER_PWD = 'admin'
HOST = 'localhost'
PORT = 8069
DB = 'my_db'
USER = 'admin'
PWD = 'password'
LANG = 'en_US'
COMPANY = u"ABF OSIELL"
TIMEZONE = u"Europe/Paris"
MODULES_TO_INSTALL = [
'sale',
'purchase',
'account_accountant',
'l10n_fr',
]
def get_session(login=True):
odoo = odoorpc.ODOO(HOST, port=PORT)
odoo.config['timeout'] = None
if login:
odoo.login(DB, USER, PWD)
return odoo
def create_database():
odoo = get_session(login=False)
if DB not in odoo.db.list():
odoo.db.create(
SUPER_PWD, DB, demo=False, lang=LANG, admin_password=PWD)
def uninstall_modules():
odoo = get_session()
Module = odoo.env['ir.module.module']
module_names = ['im_chat', 'im_livechat', 'im_odoo_support']
for module_name in module_names:
module_ids = Module.search(
[('name', '=', module_name),
('state', 'in', ['installed', 'to upgrade',
'to remove', 'to install'])])
if module_ids:
Module.button_immediate_uninstall(module_ids)
def update_company():
odoo = get_session()
company = odoo.env.user.company_id
company.name = COMPANY
def update_admin_user():
odoo = get_session()
admin = odoo.env.user
group_technical_feature = odoo.env.ref('base.group_no_one')
group_sale_manager = odoo.env.ref('base.group_sale_manager')
if group_technical_feature not in admin.groups_id:
admin.groups_id += group_technical_feature
if group_sale_manager not in admin.groups_id:
admin.groups_id += group_sale_manager
if not admin.tz:
admin.tz = TIMEZONE
def install_modules():
odoo = get_session()
# Installation
Module = odoo.env['ir.module.module']
for module_name in MODULES_TO_INSTALL:
module_ids = Module.search(
[('name', '=', module_name),
('state', 'not in', ['installed', 'to upgrade'])])
if module_ids:
Module.button_immediate_install(module_ids)
def configure_account():
odoo = get_session()
# account.installer
Wizard = odoo.env['account.installer']
config = Wizard.default_get(list(Wizard.fields_get()))
config['charts'] = 'l10n_fr'
wiz_id = Wizard.create(config)
Wizard.action_next([wiz_id])
# wizard.multi.charts.accounts
Wizard = odoo.env['wizard.multi.charts.accounts']
config = Wizard.default_get(list(Wizard.fields_get()))
config['chart_template_id'] = odoo.env.ref(
'l10n_fr.l10n_fr_pcg_chart_template').id
values = Wizard.onchange_chart_template_id(
[], config['chart_template_id'])['value']
config.update(values)
config['sale_tax'] = odoo.env.ref('l10n_fr.tva_normale').id
config['purchase_tax'] = odoo.env.ref('l10n_fr.tva_acq_normale').id
config['code_digits'] = 8
del config['bank_accounts_id']
wiz_id = Wizard.create(config)
try:
Wizard.action_next([wiz_id])
except odoorpc.error.RPCError:
print "Accounting already configured"
def main():
create_database()
uninstall_modules()
update_company()
update_admin_user()
install_modules()
configure_account()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment