This commit is contained in:
Sylvain LE GAL 2022-05-05 00:48:44 +02:00
parent d3fa0a257c
commit 38c01e014b
4 changed files with 92 additions and 0 deletions

View File

@ -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

View File

@ -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)

View 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)

View File

@ -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
""" """