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,
|
||||
migration_step: dict,
|
||||
execution_context: str,
|
||||
|
|
@ -130,13 +130,13 @@ def generate_odoo_command(
|
|||
update: str = False,
|
||||
init: str = False,
|
||||
stop_after_init: bool = False,
|
||||
shell: bool = False,
|
||||
) -> str:
|
||||
) -> list:
|
||||
"""
|
||||
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"])
|
||||
|
||||
# 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"
|
||||
parser = configparser.RawConfigParser()
|
||||
parser.read(custom_odoo_config_file)
|
||||
|
|
@ -147,7 +147,7 @@ def generate_odoo_command(
|
|||
migration_step, execution_context
|
||||
)
|
||||
|
||||
# compute 'addons_path'
|
||||
# Compute 'addons_path'
|
||||
addons_path_list, empty_addons_path_list = get_odoo_addons_path(
|
||||
ctx, odoo_env_path, migration_step, execution_context
|
||||
)
|
||||
|
|
@ -161,49 +161,72 @@ def generate_odoo_command(
|
|||
" because it doesn't contain any odoo module."
|
||||
)
|
||||
|
||||
# compute 'log_file'
|
||||
log_file_name = "{}____{}.log".format(
|
||||
ctx.obj["log_prefix"], migration_step["complete_name"]
|
||||
# Compute 'log_file'
|
||||
log_file_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 ""
|
||||
load_cmd = (
|
||||
server_wide_modules
|
||||
and "--load %s" % ",".join(server_wide_modules)
|
||||
or ""
|
||||
# Build options string
|
||||
options = [
|
||||
"--config=/odoo_env/odoo.conf",
|
||||
"--data-dir=/env/filestore/",
|
||||
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 ""
|
||||
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 = (
|
||||
|
||||
base_command = (
|
||||
Path("/odoo_env")
|
||||
/ Path(get_odoo_folder(migration_step, execution_context))
|
||||
/ Path(get_odoo_run_command(migration_step))
|
||||
)
|
||||
|
||||
result = (
|
||||
f" {command}"
|
||||
f" {shell_cmd}"
|
||||
f" --config=/odoo_env/odoo.conf"
|
||||
f" --data-dir=/env/filestore/"
|
||||
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
|
||||
options_as_string = " ".join(options)
|
||||
if shell:
|
||||
return f"{base_command} shell {options_as_string}"
|
||||
else:
|
||||
return f"{base_command} {options_as_string}"
|
||||
|
||||
|
||||
def run_odoo(
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user