diff --git a/README.md b/README.md index 8cab272..a7f4aad 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 ``skip_update=True`` 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..f3c0690 --- /dev/null +++ b/newsfragments/+add-option-no-update-all.feature @@ -0,0 +1,4 @@ +Add an option ``skip_update`` in the configuration file at migration_step level. +If enabled, 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..b49742c 100644 --- a/odoo_openupgrade_wizard/cli/cli_upgrade.py +++ b/odoo_openupgrade_wizard/cli/cli_upgrade.py @@ -30,18 +30,29 @@ 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 not migration_step.get("skip_update", False): + 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": + logger.warning( + "Incorrect setting skip_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( + f"Skip update all for version {migration_step.get('version')}." + ) + 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..d9cc8d6 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'%} + skip_update: False + {%- endif %} {% endfor %} workload_settings: diff --git a/tests/data/output_expected/config.yml b/tests/data/output_expected/config.yml index 03627e8..c64bc57 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 + skip_update: False - name: 2 version: 15.0 @@ -38,6 +39,7 @@ migration_steps: version: 15.0 execution_context: regular complete_name: step_03__regular__15.0 + skip_update: False workload_settings: