Merge branch 'split_generate_odoo_command' into 'main'
[IMP] split generate_odoo_command See merge request odoo-openupgrade-wizard/odoo-openupgrade-wizard!104
This commit is contained in:
commit
de8af95c65
1
newsfragments/+refactoring.misc
Normal file
1
newsfragments/+refactoring.misc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Refactoring of the function tools.tools_odoo.generate_odoo_command.
|
||||||
|
|
@ -121,7 +121,7 @@ def get_docker_container_name(ctx, database: str, migration_step: dict) -> str:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def generate_odoo_command(
|
def generate_odoo_command_options(
|
||||||
ctx,
|
ctx,
|
||||||
migration_step: dict,
|
migration_step: dict,
|
||||||
execution_context: str,
|
execution_context: str,
|
||||||
|
|
@ -130,13 +130,13 @@ def generate_odoo_command(
|
||||||
update: str = False,
|
update: str = False,
|
||||||
init: str = False,
|
init: str = False,
|
||||||
stop_after_init: bool = False,
|
stop_after_init: bool = False,
|
||||||
shell: bool = False,
|
) -> list:
|
||||||
) -> str:
|
"""
|
||||||
|
Generate Odoo command options as a list of string to append to any command.
|
||||||
|
"""
|
||||||
odoo_env_path = get_odoo_env_path(ctx, migration_step["version"])
|
odoo_env_path = get_odoo_env_path(ctx, migration_step["version"])
|
||||||
|
|
||||||
# Compute 'server_wide_modules'
|
# Compute 'server_wide_modules'
|
||||||
# For that purpose, read the custom odoo.conf file
|
|
||||||
# to know if server_wide_modules is defined
|
|
||||||
custom_odoo_config_file = odoo_env_path / "odoo.conf"
|
custom_odoo_config_file = odoo_env_path / "odoo.conf"
|
||||||
parser = configparser.RawConfigParser()
|
parser = configparser.RawConfigParser()
|
||||||
parser.read(custom_odoo_config_file)
|
parser.read(custom_odoo_config_file)
|
||||||
|
|
@ -147,7 +147,7 @@ def generate_odoo_command(
|
||||||
migration_step, execution_context
|
migration_step, execution_context
|
||||||
)
|
)
|
||||||
|
|
||||||
# compute 'addons_path'
|
# Compute 'addons_path'
|
||||||
addons_path_list, empty_addons_path_list = get_odoo_addons_path(
|
addons_path_list, empty_addons_path_list = get_odoo_addons_path(
|
||||||
ctx, odoo_env_path, migration_step, execution_context
|
ctx, odoo_env_path, migration_step, execution_context
|
||||||
)
|
)
|
||||||
|
|
@ -161,49 +161,72 @@ def generate_odoo_command(
|
||||||
" because it doesn't contain any odoo module."
|
" because it doesn't contain any odoo module."
|
||||||
)
|
)
|
||||||
|
|
||||||
# compute 'log_file'
|
# Compute 'log_file'
|
||||||
log_file_name = "{}____{}.log".format(
|
log_file_name = (
|
||||||
ctx.obj["log_prefix"], migration_step["complete_name"]
|
f"{ctx.obj['log_prefix']}____{migration_step['complete_name']}.log"
|
||||||
)
|
)
|
||||||
log_file_docker_path = "/env/log/%s" % log_file_name
|
log_file_docker_path = f"/env/log/{log_file_name}"
|
||||||
|
|
||||||
database_cmd = database and "--database %s" % database or ""
|
# Build options string
|
||||||
load_cmd = (
|
options = [
|
||||||
server_wide_modules
|
"--config=/odoo_env/odoo.conf",
|
||||||
and "--load %s" % ",".join(server_wide_modules)
|
"--data-dir=/env/filestore/",
|
||||||
or ""
|
f"--addons-path={addons_path}",
|
||||||
|
f"--logfile={log_file_docker_path}",
|
||||||
|
"--db_host=db",
|
||||||
|
"--db_port=5432",
|
||||||
|
"--db_user=odoo",
|
||||||
|
"--db_password=odoo",
|
||||||
|
"--workers=0",
|
||||||
|
f"{'--without-demo=all' if not demo else ''}",
|
||||||
|
f"{'--load ' + ','.join(server_wide_modules) if server_wide_modules else ''}", # noqa
|
||||||
|
f"{'--database=' + database if database else ''}",
|
||||||
|
f"{'--update ' + update if update else ''}",
|
||||||
|
f"{'--init ' + init if init else ''}",
|
||||||
|
f"{'--stop-after-init' if stop_after_init else ''}",
|
||||||
|
]
|
||||||
|
|
||||||
|
# remove empty strings
|
||||||
|
return [x for x in options if x]
|
||||||
|
|
||||||
|
|
||||||
|
def generate_odoo_command(
|
||||||
|
ctx,
|
||||||
|
migration_step: dict,
|
||||||
|
execution_context: str,
|
||||||
|
database: str,
|
||||||
|
demo: bool = False,
|
||||||
|
update: str = False,
|
||||||
|
init: str = False,
|
||||||
|
stop_after_init: bool = False,
|
||||||
|
shell: bool = False,
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
Generate the full Odoo command using options from
|
||||||
|
generate_odoo_command_options.
|
||||||
|
"""
|
||||||
|
options = generate_odoo_command_options(
|
||||||
|
ctx,
|
||||||
|
migration_step,
|
||||||
|
execution_context,
|
||||||
|
database,
|
||||||
|
demo,
|
||||||
|
update,
|
||||||
|
init,
|
||||||
|
stop_after_init,
|
||||||
)
|
)
|
||||||
update_cmd = update and "--update %s" % update or ""
|
|
||||||
init_cmd = init and "--init %s" % init or ""
|
base_command = (
|
||||||
stop_after_init_cmd = stop_after_init and "--stop-after-init" or ""
|
|
||||||
shell_cmd = shell and "shell" or ""
|
|
||||||
demo_cmd = not demo and "--without-demo all" or ""
|
|
||||||
command = (
|
|
||||||
Path("/odoo_env")
|
Path("/odoo_env")
|
||||||
/ Path(get_odoo_folder(migration_step, execution_context))
|
/ Path(get_odoo_folder(migration_step, execution_context))
|
||||||
/ Path(get_odoo_run_command(migration_step))
|
/ Path(get_odoo_run_command(migration_step))
|
||||||
)
|
)
|
||||||
|
|
||||||
result = (
|
options_as_string = " ".join(options)
|
||||||
f" {command}"
|
if shell:
|
||||||
f" {shell_cmd}"
|
return f"{base_command} shell {options_as_string}"
|
||||||
f" --config=/odoo_env/odoo.conf"
|
else:
|
||||||
f" --data-dir=/env/filestore/"
|
return f"{base_command} {options_as_string}"
|
||||||
f" --addons-path={addons_path}"
|
|
||||||
f" --logfile={log_file_docker_path}"
|
|
||||||
f" --db_host=db"
|
|
||||||
f" --db_port=5432"
|
|
||||||
f" --db_user=odoo"
|
|
||||||
f" --db_password=odoo"
|
|
||||||
f" --workers=0"
|
|
||||||
f" {demo_cmd}"
|
|
||||||
f" {load_cmd}"
|
|
||||||
f" {database_cmd}"
|
|
||||||
f" {update_cmd}"
|
|
||||||
f" {init_cmd}"
|
|
||||||
f" {stop_after_init_cmd}"
|
|
||||||
)
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
def run_odoo(
|
def run_odoo(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user