wip
This commit is contained in:
parent
d3fa0a257c
commit
38c01e014b
|
|
@ -1,5 +1,9 @@
|
||||||
image: docker:18.09
|
image: docker:18.09
|
||||||
|
|
||||||
|
variables:
|
||||||
|
DOCKER_DRIVER: overlay2
|
||||||
|
DOCKER_TLS_CERTDIR: ""
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- docker:18.09-dind
|
- docker:18.09-dind
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ from odoo_openupgrade_wizard.cli_docker_build import docker_build
|
||||||
from odoo_openupgrade_wizard.cli_execute_script import execute_script
|
from odoo_openupgrade_wizard.cli_execute_script import execute_script
|
||||||
from odoo_openupgrade_wizard.cli_get_code import get_code
|
from odoo_openupgrade_wizard.cli_get_code import get_code
|
||||||
from odoo_openupgrade_wizard.cli_init import init
|
from odoo_openupgrade_wizard.cli_init import init
|
||||||
|
from odoo_openupgrade_wizard.cli_install_from_csv import install_from_csv
|
||||||
from odoo_openupgrade_wizard.cli_run import run
|
from odoo_openupgrade_wizard.cli_run import run
|
||||||
from odoo_openupgrade_wizard.cli_test_dev import test_dev
|
from odoo_openupgrade_wizard.cli_test_dev import test_dev
|
||||||
from odoo_openupgrade_wizard.cli_upgrade import upgrade
|
from odoo_openupgrade_wizard.cli_upgrade import upgrade
|
||||||
|
|
@ -106,6 +107,7 @@ main.add_command(init)
|
||||||
main.add_command(get_code)
|
main.add_command(get_code)
|
||||||
main.add_command(docker_build)
|
main.add_command(docker_build)
|
||||||
main.add_command(run)
|
main.add_command(run)
|
||||||
|
main.add_command(install_from_csv)
|
||||||
main.add_command(upgrade)
|
main.add_command(upgrade)
|
||||||
main.add_command(execute_script)
|
main.add_command(execute_script)
|
||||||
main.add_command(test_dev)
|
main.add_command(test_dev)
|
||||||
|
|
|
||||||
84
odoo_openupgrade_wizard/cli_install_from_csv.py
Normal file
84
odoo_openupgrade_wizard/cli_install_from_csv.py
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
import csv
|
||||||
|
|
||||||
|
import click
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
|
from odoo_openupgrade_wizard.cli_options import (
|
||||||
|
database_option,
|
||||||
|
get_migration_step_from_options,
|
||||||
|
)
|
||||||
|
from odoo_openupgrade_wizard.tools_odoo import kill_odoo, run_odoo
|
||||||
|
from odoo_openupgrade_wizard.tools_odoo_instance import OdooInstance
|
||||||
|
from odoo_openupgrade_wizard.tools_postgres import ensure_database_exists
|
||||||
|
|
||||||
|
|
||||||
|
@click.command()
|
||||||
|
@database_option
|
||||||
|
@click.pass_context
|
||||||
|
def install_from_csv(ctx, database):
|
||||||
|
migration_step = get_migration_step_from_options(ctx, 1)
|
||||||
|
ensure_database_exists(database)
|
||||||
|
|
||||||
|
# Get modules list from the CSV file
|
||||||
|
csv_path = ctx.obj["module_file_path"]
|
||||||
|
logger.info("Reading '%s' file ..." % csv_path)
|
||||||
|
module_names = []
|
||||||
|
csvfile = open(csv_path, "r")
|
||||||
|
spamreader = csv.reader(csvfile, delimiter=",", quotechar='"')
|
||||||
|
for row in spamreader:
|
||||||
|
# Try to guess that a line is not correct
|
||||||
|
if not row[0]:
|
||||||
|
continue
|
||||||
|
if " " in row[0]:
|
||||||
|
continue
|
||||||
|
if any([x.isupper() for x in row[0]]):
|
||||||
|
continue
|
||||||
|
module_names.append(row[0])
|
||||||
|
|
||||||
|
module_names.sort()
|
||||||
|
logger.info("Found %d modules." % (len(module_names)))
|
||||||
|
logger.debug(module_names)
|
||||||
|
|
||||||
|
try:
|
||||||
|
logger.info("Install 'base' module on %s database ..." % (database))
|
||||||
|
run_odoo(
|
||||||
|
ctx,
|
||||||
|
migration_step,
|
||||||
|
database=database,
|
||||||
|
detached_container=True,
|
||||||
|
init="base",
|
||||||
|
)
|
||||||
|
odoo_instance = OdooInstance(ctx, database)
|
||||||
|
|
||||||
|
if "account" in module_names:
|
||||||
|
# Then, set correct country to the company of the current user
|
||||||
|
# Otherwise, due to poor design of Odoo, when installing account
|
||||||
|
# the US localization will be installed.
|
||||||
|
# (l10n_us + l10n_generic_coa)
|
||||||
|
country_code = ctx.obj["config"].get("default_country_code", "US")
|
||||||
|
countries = odoo_instance.browse_by_search(
|
||||||
|
"res.country",
|
||||||
|
[("code", "=", country_code)],
|
||||||
|
)
|
||||||
|
if len(countries) != 1:
|
||||||
|
raise Exception(
|
||||||
|
"Unable to find a country, based on the code %s."
|
||||||
|
" countries found : %s "
|
||||||
|
% (
|
||||||
|
country_code,
|
||||||
|
", ".join([x.name for x in countries]),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
logger.info(
|
||||||
|
"Configuring country of the main company with %s"
|
||||||
|
% (countries[0].name)
|
||||||
|
)
|
||||||
|
odoo_instance.env.user.company_id.country_id = countries[0].id
|
||||||
|
|
||||||
|
# Install modules
|
||||||
|
odoo_instance.install_modules(module_names)
|
||||||
|
|
||||||
|
except (KeyboardInterrupt, SystemExit):
|
||||||
|
logger.info("Received Keyboard Interrupt or System Exiting...")
|
||||||
|
finally:
|
||||||
|
kill_odoo(ctx, migration_step)
|
||||||
|
|
@ -2,6 +2,7 @@ CONFIG_YML_TEMPLATE = """project_name: {{ project_name }}
|
||||||
|
|
||||||
host_odoo_xmlrpc_port: 9069
|
host_odoo_xmlrpc_port: 9069
|
||||||
host_postgres_port: 9432
|
host_postgres_port: 9432
|
||||||
|
default_country_code: FR
|
||||||
|
|
||||||
odoo_versions:
|
odoo_versions:
|
||||||
{% for odoo_version in odoo_versions %}
|
{% for odoo_version in odoo_versions %}
|
||||||
|
|
@ -116,6 +117,7 @@ GIT_IGNORE_CONTENT = """
|
||||||
"""
|
"""
|
||||||
|
|
||||||
MODULES_CSV_TEMPLATE = """base,Base
|
MODULES_CSV_TEMPLATE = """base,Base
|
||||||
|
account,Account Module
|
||||||
product,Product
|
product,Product
|
||||||
web_responsive,Web Responsive Module
|
web_responsive,Web Responsive Module
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user