From 93854c261641f42b6f206059ad01640f36e63041 Mon Sep 17 00:00:00 2001 From: nguyenvietlam0640 Date: Thu, 29 Jun 2023 17:00:45 +0700 Subject: [PATCH 1/2] [MIG] fleet: migrate 15 to 16 --- docsource/modules150-160.rst | 2 +- .../scripts/fleet/16.0.0.1/post-migration.py | 6 ++++ .../scripts/fleet/16.0.0.1/pre-migration.py | 28 ++++++++++++++++ .../fleet/16.0.0.1/upgrade_analysis_work.txt | 32 +++++++++++++++++++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py create mode 100644 openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py create mode 100644 openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt diff --git a/docsource/modules150-160.rst b/docsource/modules150-160.rst index 952513e7233b..90c95cd89a47 100644 --- a/docsource/modules150-160.rst +++ b/docsource/modules150-160.rst @@ -144,7 +144,7 @@ Module coverage 15.0 -> 16.0 +-------------------------------------------------+----------------------+-------------------------------------------------+ | |del| fetchmail_outlook | | | +-------------------------------------------------+----------------------+-------------------------------------------------+ -| fleet | | | +| fleet | Done | | +-------------------------------------------------+----------------------+-------------------------------------------------+ | gamification | Done | | +-------------------------------------------------+----------------------+-------------------------------------------------+ diff --git a/openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py b/openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py new file mode 100644 index 000000000000..688a69f002c0 --- /dev/null +++ b/openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py @@ -0,0 +1,6 @@ +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.load_data(env.cr, "fleet", "16.0.0.1/noupdate_changes.xml") diff --git a/openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py b/openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py new file mode 100644 index 000000000000..a977fb9707cd --- /dev/null +++ b/openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py @@ -0,0 +1,28 @@ +from openupgradelib import openupgrade + + +def update_fuel_type(env): + openupgrade.logged_query( + env.cr, + """ + UPDATE fleet_vehicle + SET fuel_type = %s + WHERE fuel_type = %s or fuel_type = %s + """, + ("full_hybrid", "full_hybrid_gasoline", "hybrid"), + ) + + openupgrade.logged_query( + env.cr, + """ + UPDATE fleet_vehicle_model + SET default_fuel_type = %s + WHERE default_fuel_type = %s or default_fuel_type = %s + """, + ("full_hybrid", "full_hybrid_gasoline", "hybrid"), + ) + + +@openupgrade.migrate() +def migrate(env, version): + update_fuel_type(env) diff --git a/openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt new file mode 100644 index 000000000000..492230009797 --- /dev/null +++ b/openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt @@ -0,0 +1,32 @@ +---Models in module 'fleet'--- +---Fields in module 'fleet'--- +fleet / fleet.service.type / _order : _order is now 'name' ('id') +fleet / fleet.vehicle / category_id (many2one) : NEW relation: fleet.vehicle.model.category, hasdefault: compute + +# NOTHING TO DO + +fleet / fleet.vehicle / fuel_type (selection) : selection_keys is now '['cng', 'diesel', 'electric', 'full_hybrid', 'gasoline', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']' ('['cng', 'diesel', 'electric', 'full_hybrid_gasoline', 'gasoline', 'hybrid', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']') + +# DONE in pre-migration full_hybrid_gasoline and hybrid is combine to full_hybrid + +fleet / fleet.vehicle / write_off_date (date) : NEW + +# NOTHING TO DO + +fleet / fleet.vehicle.log.contract / name (char) : not a function anymore +fleet / fleet.vehicle.log.services / manager_id (many2one) : NEW relation: res.users, isrelated: related, stored + +# NOTHING TO DO + +fleet / fleet.vehicle.model / default_fuel_type (selection) : selection_keys is now '['cng', 'diesel', 'electric', 'full_hybrid', 'gasoline', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']' ('['cng', 'diesel', 'electric', 'full_hybrid_gasoline', 'gasoline', 'hybrid', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']') + +# DONE in pre-migration full_hybrid_gasoline and hybrid is combine to full_hybrid + +---XML records in module 'fleet'--- +NEW ir.ui.menu: fleet.fleet_models_configuration +NEW ir.ui.menu: fleet.fleet_services_configuration +NEW ir.ui.menu: fleet.fleet_vehicles_configuration +NEW ir.ui.view: fleet.fleet_vehicle_log_services_view_activity +NEW ir.ui.view: fleet.fleet_vehicle_service_types_view_search + +# NOTHING TO DO \ No newline at end of file From 92f219d057c325e6626c877d84b10013dd76cc63 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 27 Feb 2024 21:08:23 +0100 Subject: [PATCH 2/2] [OU-FIX+IMP] fleet: Finish migration scripts --- .../fleet/16.0.0.1/noupdate_changes.xml | 2 + .../scripts/fleet/16.0.0.1/post-migration.py | 2 + .../scripts/fleet/16.0.0.1/pre-migration.py | 40 ++++++++++++------- .../fleet/16.0.0.1/upgrade_analysis_work.txt | 24 +++++------ 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/openupgrade_scripts/scripts/fleet/16.0.0.1/noupdate_changes.xml b/openupgrade_scripts/scripts/fleet/16.0.0.1/noupdate_changes.xml index 2ef187a8fbf4..197a5705b8b1 100644 --- a/openupgrade_scripts/scripts/fleet/16.0.0.1/noupdate_changes.xml +++ b/openupgrade_scripts/scripts/fleet/16.0.0.1/noupdate_changes.xml @@ -1,5 +1,6 @@ + diff --git a/openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py b/openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py index 688a69f002c0..28e39fce6e58 100644 --- a/openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py +++ b/openupgrade_scripts/scripts/fleet/16.0.0.1/post-migration.py @@ -1,3 +1,5 @@ +# Copyright 2023 Viindoo - Nguyễn Việt Lâm +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openupgradelib import openupgrade diff --git a/openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py b/openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py index a977fb9707cd..05775508e5e7 100644 --- a/openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py +++ b/openupgrade_scripts/scripts/fleet/16.0.0.1/pre-migration.py @@ -1,28 +1,40 @@ +# Copyright 2023 Viindoo - Nguyễn Việt Lâm +# Copyright 2024 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openupgradelib import openupgrade -def update_fuel_type(env): +def _prefill_fleet_vehicle_category_id(env): openupgrade.logged_query( - env.cr, - """ - UPDATE fleet_vehicle - SET fuel_type = %s - WHERE fuel_type = %s or fuel_type = %s - """, - ("full_hybrid", "full_hybrid_gasoline", "hybrid"), + env.cr, "ALTER TABLE fleet_vehicle ADD COLUMN IF NOT EXISTS category_id INT4" ) - openupgrade.logged_query( env.cr, """ - UPDATE fleet_vehicle_model - SET default_fuel_type = %s - WHERE default_fuel_type = %s or default_fuel_type = %s + UPDATE fleet_vehicle fv + SET category_id = fvm.category_id + FROM fleet_vehicle_model fvm + WHERE fvm.id = fv.model_id AND fvm.category_id IS NOT NULL """, - ("full_hybrid", "full_hybrid_gasoline", "hybrid"), ) +def _update_fuel_type(env): + for table, column in ( + ("fleet_vehicle", "fuel_type"), + ("fleet_vehicle_model", "default_fuel_type"), + ): + openupgrade.logged_query( + env.cr, + f""" + UPDATE {table} + SET {column} = 'full_hybrid' + WHERE {column} IN ('full_hybrid_gasoline', 'hybrid') + """, + ) + + @openupgrade.migrate() def migrate(env, version): - update_fuel_type(env) + _prefill_fleet_vehicle_category_id(env) + _update_fuel_type(env) diff --git a/openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt index 492230009797..1e958389aa35 100644 --- a/openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt +++ b/openupgrade_scripts/scripts/fleet/16.0.0.1/upgrade_analysis_work.txt @@ -1,26 +1,23 @@ ---Models in module 'fleet'--- ---Fields in module 'fleet'--- fleet / fleet.service.type / _order : _order is now 'name' ('id') -fleet / fleet.vehicle / category_id (many2one) : NEW relation: fleet.vehicle.model.category, hasdefault: compute - # NOTHING TO DO -fleet / fleet.vehicle / fuel_type (selection) : selection_keys is now '['cng', 'diesel', 'electric', 'full_hybrid', 'gasoline', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']' ('['cng', 'diesel', 'electric', 'full_hybrid_gasoline', 'gasoline', 'hybrid', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']') +fleet / fleet.vehicle / category_id (many2one) : NEW relation: fleet.vehicle.model.category, hasdefault: compute +# DONE: pre-migration: Pre-create the column and fast-fill it for avoiding both low performance and rewrite a lot of fields, as the compute method is general for a lot of them. -# DONE in pre-migration full_hybrid_gasoline and hybrid is combine to full_hybrid +fleet / fleet.vehicle / fuel_type (selection) : selection_keys is now '['cng', 'diesel', 'electric', 'full_hybrid', 'gasoline', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']' ('['cng', 'diesel', 'electric', 'full_hybrid_gasoline', 'gasoline', 'hybrid', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']') +fleet / fleet.vehicle.model / default_fuel_type (selection) : selection_keys is now '['cng', 'diesel', 'electric', 'full_hybrid', 'gasoline', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']' ('['cng', 'diesel', 'electric', 'full_hybrid_gasoline', 'gasoline', 'hybrid', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']') +# DONE: pre-migration: full_hybrid_gasoline and hybrid is combined into full_hybrid fleet / fleet.vehicle / write_off_date (date) : NEW - -# NOTHING TO DO +# NOTHING TO DO: New field fleet / fleet.vehicle.log.contract / name (char) : not a function anymore -fleet / fleet.vehicle.log.services / manager_id (many2one) : NEW relation: res.users, isrelated: related, stored - -# NOTHING TO DO - -fleet / fleet.vehicle.model / default_fuel_type (selection) : selection_keys is now '['cng', 'diesel', 'electric', 'full_hybrid', 'gasoline', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']' ('['cng', 'diesel', 'electric', 'full_hybrid_gasoline', 'gasoline', 'hybrid', 'hydrogen', 'lpg', 'plug_in_hybrid_diesel', 'plug_in_hybrid_gasoline']') +# NOTHING TO DO: Converted to computed writable -# DONE in pre-migration full_hybrid_gasoline and hybrid is combine to full_hybrid +fleet / fleet.vehicle.log.services / manager_id (many2one) : NEW relation: res.users, isrelated: related, stored +# NOTHING TO DO: Computed efficiently by ORM ---XML records in module 'fleet'--- NEW ir.ui.menu: fleet.fleet_models_configuration @@ -28,5 +25,4 @@ NEW ir.ui.menu: fleet.fleet_services_configuration NEW ir.ui.menu: fleet.fleet_vehicles_configuration NEW ir.ui.view: fleet.fleet_vehicle_log_services_view_activity NEW ir.ui.view: fleet.fleet_vehicle_service_types_view_search - -# NOTHING TO DO \ No newline at end of file +# NOTHING TO DO