odoo-openupgrade-wizard/odoo_openupgrade_wizard/cli/cli_execute_script_python.py
2025-10-03 20:52:24 +02:00

53 lines
1.6 KiB
Python

from pathlib import Path
import click
from odoo_openupgrade_wizard.cli.cli_options import (
database_option_required,
get_migration_step_from_options,
step_option,
)
from odoo_openupgrade_wizard.tools.tools_odoo import (
execute_click_odoo_python_files,
)
@click.command()
@step_option
@database_option_required
@click.option(
"--script-file-path",
multiple=True,
type=click.Path(
exists=True,
dir_okay=False,
),
help="""List of Python files to execute, with either an absolute path
or path relative to the project directory. With either method, the
path must be located inside the project directory so that the
Docker container can access it.
Files will be executed in
the order listed. If no files are specified, all Python (.py) files
in the `step` directory will be sorted alphabetically and then
executed in order.
See README.md for more information and examples.""",
)
@click.pass_context
def execute_script_python(ctx, step, database, script_file_path):
"""Execute Python scripts for a migration step.
Executes one or more custom Python scripts in the context of a specific
migration step, using the Odoo shell (with full ORM access). This command
allows you to manually run Python logic outside of the default
post-migration.py file for a given step. It allows fine-tuning
of migration behavior by manually specifying logic.
"""
migration_step = get_migration_step_from_options(ctx, step)
execute_click_odoo_python_files(
ctx, database, migration_step, [Path(x) for x in script_file_path]
)