107 lines
3.3 KiB
Python
107 lines
3.3 KiB
Python
from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
|
|
|
|
from proteus import Model, Wizard
|
|
from proteus import config as pconfig
|
|
|
|
import currency
|
|
import company as company_
|
|
import parties
|
|
|
|
import json
|
|
|
|
|
|
def set_config(database, config_file):
|
|
return pconfig.set_trytond(database, config_file=config_file)
|
|
|
|
|
|
def activate_modules(config, modules):
|
|
Module = Model.get('ir.module')
|
|
modules = Module.find([
|
|
('name', 'in', modules),
|
|
])
|
|
|
|
for module in modules:
|
|
if module.state == 'activate':
|
|
module.click('upgrade')
|
|
else:
|
|
module.click('activate')
|
|
|
|
modules = [m.name for m in Module.find([('state', '=', 'to_activate')])]
|
|
Wizard('ir.module.activate_upgrade').execute('upgrade')
|
|
|
|
ConfigWizardItem = Model.get('ir.module.config_wizard.item')
|
|
for item in ConfigWizardItem.find([('state', '!=', 'done')]):
|
|
item.state = 'done'
|
|
item.save()
|
|
|
|
activated_modules = [
|
|
m.name for m in Module.find([('state', '=', 'activated')])
|
|
]
|
|
|
|
return modules, activated_modules
|
|
|
|
|
|
def setup_languages(config, demo_password, company_config, company=None):
|
|
User = Model.get('res.user')
|
|
Lang = Model.get('ir.lang')
|
|
Action = Model.get('ir.action')
|
|
|
|
langs = Lang.find([("code", "in", company_config["languages"]["codes"])])
|
|
Lang.click(langs, 'load_translations')
|
|
|
|
company_lang, = Lang.find([
|
|
("code", "=", company_config["company_language"])
|
|
])
|
|
|
|
admin, = User.find(
|
|
[("id", "=", 1)]
|
|
)
|
|
# Use root to skip password validation
|
|
|
|
menu, = Action.find([('usage', '=', 'menu')])
|
|
|
|
admin.menu = menu
|
|
admin.language = company_lang
|
|
admin.save()
|
|
|
|
|
|
def main(database, modules, demo_password, company_config, config_file=None):
|
|
config = set_config(database, config_file)
|
|
to_activate, activated = activate_modules(config, modules)
|
|
|
|
if 'currency' in to_activate or 'currency' in activated:
|
|
currency.do_import()
|
|
|
|
if 'company' in to_activate:
|
|
company = company_.setup(config, activated, company_config)
|
|
elif 'company' in activated:
|
|
if not (company := company_.get(company_config)):
|
|
company = company_.setup(config, activated, company_config)
|
|
else:
|
|
company = company
|
|
else:
|
|
company = None
|
|
|
|
setup_languages(config, demo_password, company_config, company=company)
|
|
# parties.setup_parties(database=database, config_file=config_file)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
with open('demo/data/config.json') as file:
|
|
config_tryton = json.load(file)
|
|
|
|
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
|
|
parser.add_argument('-c', '--config', dest='config_file')
|
|
parser.add_argument('-m', '--module', dest='modules', nargs='+',
|
|
help='module to activate', default=config_tryton.get(
|
|
"modules"))
|
|
|
|
parser.add_argument('--demo_password', dest='demo_password',
|
|
default='demo', help='demo password')
|
|
parser.add_argument('-d', '--database', dest='database',
|
|
default='demo', help="database name")
|
|
options = parser.parse_args()
|
|
|
|
main(options.database, options.modules, options.demo_password,
|
|
config_file=options.config_file, company_config=config_tryton)
|