diff --git a/README.md b/README.md index 8cab272..63d2df4 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,11 @@ modules.csv the classical keys (``db_host``, ``db_port``, etc...) are automatically autogenerated. -At this step, you should change the autogenerated files. +At this step, you should change the autogenerated files. For exemple: +- you can set ``update=False`` to prevents to run an update=all, in the 'regular' steps + (first and last steps). In that case, only SQL queries and python scripts + will be executed during this step. + You can use default files, if you have a very simple odoo instance without custom code, extra repositories, or dependencies... diff --git a/newsfragments/+add-option-no-update-all.feature b/newsfragments/+add-option-no-update-all.feature new file mode 100644 index 0000000..3e1ea61 --- /dev/null +++ b/newsfragments/+add-option-no-update-all.feature @@ -0,0 +1,4 @@ +Add an option ``update`` in the configuration file at migration_step level. +If disabled, the update=all step will be skipped during this step. +That can be interesting to save time, during the first and the last steps of the migration +process (when ``execution_context='regular'). diff --git a/odoo_openupgrade_wizard/cli/cli_upgrade.py b/odoo_openupgrade_wizard/cli/cli_upgrade.py index a29bf41..a7e06c0 100644 --- a/odoo_openupgrade_wizard/cli/cli_upgrade.py +++ b/odoo_openupgrade_wizard/cli/cli_upgrade.py @@ -30,18 +30,30 @@ def upgrade(ctx, first_step, last_step, database, with_demo): ) for migration_step in migration_steps: execute_sql_files_pre_migration(ctx, database, migration_step) - try: - run_odoo( - ctx, - migration_step, - database=database, - detached_container=False, - update="all", - stop_after_init=True, - demo=with_demo, + if migration_step.get("update", True): + try: + run_odoo( + ctx, + migration_step, + database=database, + detached_container=False, + update="all", + stop_after_init=True, + demo=with_demo, + ) + except (KeyboardInterrupt, SystemExit): + logger.info("Received Keyboard Interrupt or System Exiting...") + finally: + kill_odoo(ctx, database, migration_step) + elif migration_step.get("execution_context") == "openupgrade": + raise ValueError( + "Incorrect setting 'update: True'" + " and 'execution_context: openupgrade'" ) - except (KeyboardInterrupt, SystemExit): - logger.info("Received Keyboard Interrupt or System Exiting...") - finally: - kill_odoo(ctx, database, migration_step) + else: + logger.info( + "Skip update=all for" + f" step {migration_step.get('complete_name')}" + ) + execute_click_odoo_python_files(ctx, database, migration_step) diff --git a/odoo_openupgrade_wizard/templates/config.yml.j2 b/odoo_openupgrade_wizard/templates/config.yml.j2 index 6b6ca36..5b0caab 100644 --- a/odoo_openupgrade_wizard/templates/config.yml.j2 +++ b/odoo_openupgrade_wizard/templates/config.yml.j2 @@ -31,6 +31,9 @@ migration_steps: version: {{ step['version'] }} execution_context: {{ step['execution_context'] }} complete_name: {{ step['complete_name'] }} + {%- if step['execution_context'] == 'regular'%} + update: True + {%- endif %} {% endfor %} workload_settings: diff --git a/tests/data/output_expected/config.yml b/tests/data/output_expected/config.yml index 03627e8..af81604 100644 --- a/tests/data/output_expected/config.yml +++ b/tests/data/output_expected/config.yml @@ -28,6 +28,7 @@ migration_steps: version: 14.0 execution_context: regular complete_name: step_01__regular__14.0 + update: True - name: 2 version: 15.0 @@ -38,6 +39,7 @@ migration_steps: version: 15.0 execution_context: regular complete_name: step_03__regular__15.0 + update: True workload_settings: