diff --git a/docsource/modules160-170.rst b/docsource/modules160-170.rst index 0ae89b703492..911f254bfec7 100644 --- a/docsource/modules160-170.rst +++ b/docsource/modules160-170.rst @@ -70,7 +70,7 @@ Module coverage 16.0 -> 17.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | barcodes_gs1_nomenclature | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| base | | | +| base |Done (partial) | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | base_address_extended | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ diff --git a/openupgrade_scripts/scripts/base/16.0.1.3/tests/__init__.py b/openupgrade_scripts/scripts/base/16.0.1.3/tests/__init__.py deleted file mode 100644 index 8e84cc263319..000000000000 --- a/openupgrade_scripts/scripts/base/16.0.1.3/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import test_base_migration diff --git a/openupgrade_scripts/scripts/base/16.0.1.3/tests/data.py b/openupgrade_scripts/scripts/base/16.0.1.3/tests/data.py deleted file mode 100644 index 3a6320e3e6e6..000000000000 --- a/openupgrade_scripts/scripts/base/16.0.1.3/tests/data.py +++ /dev/null @@ -1,4 +0,0 @@ -env = locals().get("env") -# set company_registry in v15 to be sure we migrate it correctly to v16 -env.ref("base.main_company").company_registry = "424242" -env.cr.commit() diff --git a/openupgrade_scripts/scripts/base/16.0.1.3/tests/test_base_migration.py b/openupgrade_scripts/scripts/base/16.0.1.3/tests/test_base_migration.py deleted file mode 100644 index 060eff2d75e4..000000000000 --- a/openupgrade_scripts/scripts/base/16.0.1.3/tests/test_base_migration.py +++ /dev/null @@ -1,16 +0,0 @@ -from odoo.tests import TransactionCase - - -class TestBaseMigration(TransactionCase): - def test_company_registry(self): - """Make sure we copy res.company#company_registry to res.partner#company_registry""" - self.assertEqual(self.env.ref("base.main_company").company_registry, "424242") - - def test_translations(self): - """ - We have a DB with French translations as v15 test db, - check its translations have been converted correctly - """ - title_mister = self.env.ref("base.res_partner_title_mister") - self.assertEqual(title_mister.name, "Mister") - self.assertEqual(title_mister.with_context(lang="fr_FR").name, "Monsieur") diff --git a/openupgrade_scripts/scripts/base/17.0.1.3/end-migration.py b/openupgrade_scripts/scripts/base/17.0.1.3/end-migration.py new file mode 100644 index 000000000000..d7d8fc20f17c --- /dev/null +++ b/openupgrade_scripts/scripts/base/17.0.1.3/end-migration.py @@ -0,0 +1,10 @@ +# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo) +# Copyright 2022 ForgeFlow S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + """Call disable_invalid_filters in every edition of openupgrade""" + openupgrade.disable_invalid_filters(env) diff --git a/openupgrade_scripts/scripts/base/17.0.1.3/post-migration.py b/openupgrade_scripts/scripts/base/17.0.1.3/post-migration.py new file mode 100644 index 000000000000..f5dad56cf27f --- /dev/null +++ b/openupgrade_scripts/scripts/base/17.0.1.3/post-migration.py @@ -0,0 +1,37 @@ +# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo) +# Copyright 2023 Hunki Enterprises BV (https://hunki-enterprises.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade + +_deleted_xml_records = [ + "base.icp_mail_bounce_alias", + "base.icp_mail_catchall_alias", + "base.icp_mail_default_from", + "base.res_partner_rule_private_employee", + "base.res_partner_rule_private_group", + "account.data_account_type_direct_costs", + "account.data_account_type_equity", + "account.data_account_type_expenses", + "account.data_account_type_fixed_assets", + "account.data_account_type_liquidity", + "account.data_account_type_non_current_assets", + "account.data_account_type_non_current_liabilities", + "account.data_account_type_other_income", + "account.data_account_type_payable", + "account.data_account_type_prepayments", + "account.data_account_type_receivable", + "account.data_account_type_revenue", + "account.data_unaffected_earnings", + "account.account_tax_carryover_line_comp_rule", + "account.analytic_default_comp_rule", +] + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.load_data(env.cr, "base", "17.0.1.3/noupdate_changes.xml") + openupgrade.delete_records_safely_by_xml_id( + env, + _deleted_xml_records, + ) diff --git a/openupgrade_scripts/scripts/base/17.0.1.3/pre-migration.py b/openupgrade_scripts/scripts/base/17.0.1.3/pre-migration.py new file mode 100644 index 000000000000..67f66119f1a7 --- /dev/null +++ b/openupgrade_scripts/scripts/base/17.0.1.3/pre-migration.py @@ -0,0 +1,55 @@ +# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo) +# Copyright 2020 Odoo Community Association (OCA) +# Copyright 2020 Opener B.V. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import logging + +from openupgradelib import openupgrade + +from odoo import tools + +from odoo.addons.openupgrade_scripts.apriori import merged_modules, renamed_modules + +_logger = logging.getLogger(__name__) + +_xmlids_renames = [ + ( + "mail.access_res_users_settings_all", + "base.access_res_users_settings_all", + ), + ( + "mail.access_res_users_settings_user", + "base.access_res_users_settings_user", + ), + ( + "mail.res_users_settings_rule_admin", + "base.res_users_settings_rule_admin", + ), + ( + "mail.res_users_settings_rule_user", + "base.res_users_settings_rule_user", + ), + ( + "mail.constraint_res_users_settings_unique_user_id", + "base.constraint_res_users_settings_unique_user_id", + ), +] + + +@openupgrade.migrate(use_env=False) +def migrate(cr, version): + """ + Don't request an env for the base pre-migration as flushing the env in + odoo/modules/registry.py will break on the 'base' module not yet having + been instantiated. + """ + if "openupgrade_framework" not in tools.config["server_wide_modules"]: + _logger.error( + "openupgrade_framework is not preloaded. You are highly " + "recommended to run the Odoo with --load=openupgrade_framework " + "when migrating your database." + ) + openupgrade.update_module_names(cr, renamed_modules.items()) + openupgrade.update_module_names(cr, merged_modules.items(), merge_modules=True) + openupgrade.clean_transient_models(cr) + openupgrade.rename_xmlids(cr, _xmlids_renames) diff --git a/openupgrade_scripts/scripts/base/17.0.1.3/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/base/17.0.1.3/upgrade_analysis_work.txt new file mode 100644 index 000000000000..817f81934b94 --- /dev/null +++ b/openupgrade_scripts/scripts/base/17.0.1.3/upgrade_analysis_work.txt @@ -0,0 +1,253 @@ +---Models in module 'base'--- +obsolete model ir.server.object.lines +new model ir.model.inherit +model res.users.settings (moved from mail) +# TODO + +---Fields in module 'base'--- +base / ir.actions.act_url / target (selection) : selection_keys is now '['download', 'new', 'self']' ('['new', 'self']') +base / ir.actions.act_window / mobile_view_mode (char) : NEW hasdefault: default +base / ir.actions.server / evaluation_type (selection) : NEW selection_keys: ['equation', 'value'], hasdefault: default +base / ir.actions.server / fields_lines (one2many) : DEL relation: ir.server.object.lines +base / ir.actions.server / resource_ref (reference) : NEW +base / ir.actions.server / selection_value (many2one) : NEW relation: ir.model.fields.selection +# TODO + +base / ir.actions.server / state (selection) : selection_keys is now '['code', 'multi', 'object_create', 'object_write', 'webhook']' ('['code', 'multi', 'object_create', 'object_write']') +# NOTHING TO DO: new feature + +base / ir.actions.server / update_boolean_value (selection): NEW selection_keys: ['false', 'true'], hasdefault: default +base / ir.actions.server / update_field_id (many2one) : NEW relation: ir.model.fields, hasdefault: compute +base / ir.actions.server / update_m2m_operation (selection): NEW selection_keys: ['add', 'clear', 'remove', 'set'], hasdefault: default +base / ir.actions.server / update_path (char) : NEW hasdefault: default +base / ir.actions.server / update_related_model_id (many2one): NEW relation: ir.model, isfunction: function, stored +base / ir.actions.server / value (text) : NEW +base / ir.actions.server / webhook_field_ids (many2many) : NEW relation: ir.model.fields +base / ir.actions.server / webhook_url (char) : NEW +# TODO + +base / ir.cron / cron_name (char) : not related anymore +base / ir.cron / cron_name (char) : now a function +base / ir.mail_server / _order : _order is now 'sequence, id' ('sequence') +base / ir.mail_server / smtp_authentication (selection): selection_keys is now '['certificate', 'cli', 'login']' ('['certificate', 'login']') +# NOTHING TO DO + +base / ir.model.fields / currency_field (char) : NEW +base / ir.model.fields / sanitize (boolean) : NEW hasdefault: default +base / ir.model.fields / sanitize_attributes (boolean) : NEW hasdefault: default +base / ir.model.fields / sanitize_form (boolean) : NEW hasdefault: default +base / ir.model.fields / sanitize_overridable (boolean): NEW hasdefault: default +base / ir.model.fields / sanitize_style (boolean) : NEW hasdefault: default +base / ir.model.fields / sanitize_tags (boolean) : NEW hasdefault: default +base / ir.model.fields / strip_classes (boolean) : NEW hasdefault: default +base / ir.model.fields / strip_style (boolean) : NEW hasdefault: default +base / ir.model.inherit / model_id (many2one) : NEW relation: ir.model, required +base / ir.model.inherit / parent_field_id (many2one) : NEW relation: ir.model.fields +base / ir.model.inherit / parent_id (many2one) : NEW relation: ir.model, required +# TODO + +base / ir.property / type (selection) : selection_keys is now '['binary', 'boolean', 'char', 'date', 'datetime', 'float', 'html', 'integer', 'many2one', 'selection', 'text']' ('['binary', 'boolean', 'char', 'date', 'datetime', 'float', 'integer', 'many2one', 'selection', 'text']') +# NOTHING TO DO: new feature + +base / ir.server.object.lines / col1 (many2one) : DEL relation: ir.model.fields, required +base / ir.server.object.lines / evaluation_type (selection) : DEL required, selection_keys: ['equation', 'reference', 'value'] +base / ir.server.object.lines / server_id (many2one) : DEL relation: ir.actions.server +base / ir.server.object.lines / value (text) : DEL required +base / ir.ui.view / field_parent (char) : DEL +base / res.company / all_child_ids (one2many) : NEW relation: res.company +base / res.company / base_onboarding_company_state (selection): DEL selection_keys: ['done', 'just_done', 'not_done'] +base / res.company / favicon (binary) : DEL attachment: True +base / res.company / parent_path (char) : NEW +base / res.company / uses_default_logo (boolean) : NEW isfunction: function, stored +base / res.country / code (char) : now required +base / res.partner / _order : _order is now 'complete_name ASC, id DESC' ('display_name ASC, id DESC') +base / res.partner / complete_name (char) : NEW isfunction: function, stored +base / res.partner / display_name (char) : not stored anymore +base / res.partner / type (selection) : selection_keys is now '['contact', 'delivery', 'invoice', 'other']' ('['contact', 'delivery', 'invoice', 'other', 'private']') +# TODO + +base / res.users / res_users_settings_id (many2one): previously in module mail +base / res.users / res_users_settings_ids (one2many): previously in module mail +base / res.users.settings / _order : previously in module mail +base / res.users.settings / display_name (char) : previously in module mail +base / res.users.settings / user_id (many2one) : previously in module mail +# NOTHING TO DO + +---XML records in module 'base'--- +NEW ir.actions.act_window: base.ir_client_actions_report +DEL ir.actions.act_window: base.action_open_base_onboarding_company +DEL ir.actions.client: base.modules_act_cl +DEL ir.actions.client: base.modules_updates_act_cl +DEL ir.actions.server: base.action_server_module_immediate_install +# NOTHING TO DO: noupdate records + +DEL ir.config_parameter: base.icp_mail_bounce_alias (noupdate) +DEL ir.config_parameter: base.icp_mail_catchall_alias (noupdate) +DEL ir.config_parameter: base.icp_mail_default_from (noupdate) +# DONE: removed in post-migration + +NEW ir.cron: base.ir_cron_res_users_deletion +NEW ir.model.access: base.access_ir_model_inherit +NEW ir.model.access: base.access_res_company_employee +NEW ir.model.access: base.access_res_company_portal +NEW ir.model.access: base.access_res_company_public +NEW ir.model.access: base.access_res_country_employee +NEW ir.model.access: base.access_res_country_group_employee +NEW ir.model.access: base.access_res_country_group_portal +NEW ir.model.access: base.access_res_country_group_public +NEW ir.model.access: base.access_res_country_portal +NEW ir.model.access: base.access_res_country_public +NEW ir.model.access: base.access_res_country_state_employee +NEW ir.model.access: base.access_res_country_state_portal +NEW ir.model.access: base.access_res_country_state_public +NEW ir.model.access: base.access_res_currency_employee +NEW ir.model.access: base.access_res_currency_portal +NEW ir.model.access: base.access_res_currency_public +NEW ir.model.access: base.access_res_currency_rate_employee +NEW ir.model.access: base.access_res_currency_rate_portal +NEW ir.model.access: base.access_res_currency_rate_public +NEW ir.model.access: base.access_res_lang_employee +NEW ir.model.access: base.access_res_lang_group_system +NEW ir.model.access: base.access_res_lang_portal +NEW ir.model.access: base.access_res_lang_public +NEW ir.model.access: base.access_res_users_employee +NEW ir.model.access: base.access_res_users_log_system +NEW ir.model.access: base.access_res_users_portal +NEW ir.model.access: base.access_res_users_public +# NOTHING TO DO: noupdate records + +NEW ir.model.access: base.access_res_users_settings_all [renamed from mail module] +NEW ir.model.access: base.access_res_users_settings_user [renamed from mail module] +# DONE: renamed in pre-migration + +DEL ir.model.access: base.access_ir_server_object_lines_group_system +DEL ir.model.access: base.access_res_company_group_user +DEL ir.model.access: base.access_res_country_group_all +DEL ir.model.access: base.access_res_country_group_group_all +DEL ir.model.access: base.access_res_country_state_group_all +DEL ir.model.access: base.access_res_currency_group_all +DEL ir.model.access: base.access_res_currency_rate_group_all +DEL ir.model.access: base.access_res_lang_group_all +DEL ir.model.access: base.access_res_lang_group_user +DEL ir.model.access: base.access_res_users_all +DEL ir.model.access: base.access_res_users_log_all +NEW ir.model.constraint: base.constraint_ir_model_fields_name_manual_field +NEW ir.model.constraint: base.constraint_ir_model_inherit_uniq +# NOTHING TO DO: noupdate records + +NEW ir.model.constraint: base.constraint_res_users_settings_unique_user_id [renamed from mail module] +# DONE: renamed in pre-migration + +NEW ir.module.category: base.module_category_services_appointment +NEW ir.module.module: base.module_sale_amazon (noupdate) +# NOTHING TO DO: new records + +NEW ir.rule: base.res_users_settings_rule_admin [renamed from mail module] (noupdate) +NEW ir.rule: base.res_users_settings_rule_user [renamed from mail module] (noupdate) +# DONE: renamed in pre-migration + +DEL ir.rule: base.res_partner_rule_private_employee (noupdate) +DEL ir.rule: base.res_partner_rule_private_group (noupdate) +# DONE: removed in post-migration + +NEW ir.ui.menu: base.menu_ir_client_actions_report +DEL ir.ui.menu: base.menu_board_root +DEL ir.ui.menu: base.menu_module_updates +DEL ir.ui.menu: base.menu_reporting_config +DEL ir.ui.menu: base.menu_reporting_dashboard +DEL ir.ui.menu: base.module_mi +NEW ir.ui.view: base.no_contact +NEW ir.ui.view: base.res_users_identitycheck_view_form +NEW ir.ui.view: base.res_users_identitycheck_view_form_revokedevices +NEW ir.ui.view: base.view_client_action_form +NEW ir.ui.view: base.view_client_action_tree +NEW ir.ui.view: base.view_country_search +DEL ir.ui.view: base.base_onboarding_company_form +DEL ir.ui.view: base.identity_check_wizard +DEL ir.ui.view: base.onboarding_company_step +DEL ir.ui.view: base.onboarding_container +DEL ir.ui.view: base.onboarding_step +DEL ir.ui.view: base.view_module_category_tree +# NOTHING TO DO: noupdate records + +NEW res.country.group: base.eurasian_economic_union (noupdate) +# NOTHING TO DO: new record + +NEW res.country.state: base.state_hk_hk +NEW res.country.state: base.state_hk_kln +NEW res.country.state: base.state_hk_nt +NEW res.country.state: base.state_ke_01 +NEW res.country.state: base.state_ke_02 +NEW res.country.state: base.state_ke_03 +NEW res.country.state: base.state_ke_04 +NEW res.country.state: base.state_ke_05 +NEW res.country.state: base.state_ke_06 +NEW res.country.state: base.state_ke_07 +NEW res.country.state: base.state_ke_08 +NEW res.country.state: base.state_ke_09 +NEW res.country.state: base.state_ke_10 +NEW res.country.state: base.state_ke_11 +NEW res.country.state: base.state_ke_12 +NEW res.country.state: base.state_ke_13 +NEW res.country.state: base.state_ke_14 +NEW res.country.state: base.state_ke_15 +NEW res.country.state: base.state_ke_16 +NEW res.country.state: base.state_ke_17 +NEW res.country.state: base.state_ke_18 +NEW res.country.state: base.state_ke_19 +NEW res.country.state: base.state_ke_20 +NEW res.country.state: base.state_ke_21 +NEW res.country.state: base.state_ke_22 +NEW res.country.state: base.state_ke_23 +NEW res.country.state: base.state_ke_24 +NEW res.country.state: base.state_ke_25 +NEW res.country.state: base.state_ke_26 +NEW res.country.state: base.state_ke_27 +NEW res.country.state: base.state_ke_28 +NEW res.country.state: base.state_ke_29 +NEW res.country.state: base.state_ke_30 +NEW res.country.state: base.state_ke_31 +NEW res.country.state: base.state_ke_32 +NEW res.country.state: base.state_ke_33 +NEW res.country.state: base.state_ke_34 +NEW res.country.state: base.state_ke_35 +NEW res.country.state: base.state_ke_36 +NEW res.country.state: base.state_ke_37 +NEW res.country.state: base.state_ke_38 +NEW res.country.state: base.state_ke_39 +NEW res.country.state: base.state_ke_40 +NEW res.country.state: base.state_ke_41 +NEW res.country.state: base.state_ke_42 +NEW res.country.state: base.state_ke_43 +NEW res.country.state: base.state_ke_44 +NEW res.country.state: base.state_ke_45 +NEW res.country.state: base.state_ke_46 +NEW res.country.state: base.state_ke_47 +NEW res.country.state: base.state_uy_01 +NEW res.country.state: base.state_uy_02 +NEW res.country.state: base.state_uy_03 +NEW res.country.state: base.state_uy_04 +NEW res.country.state: base.state_uy_05 +NEW res.country.state: base.state_uy_06 +NEW res.country.state: base.state_uy_07 +NEW res.country.state: base.state_uy_08 +NEW res.country.state: base.state_uy_09 +NEW res.country.state: base.state_uy_10 +NEW res.country.state: base.state_uy_11 +NEW res.country.state: base.state_uy_12 +NEW res.country.state: base.state_uy_13 +NEW res.country.state: base.state_uy_14 +NEW res.country.state: base.state_uy_15 +NEW res.country.state: base.state_uy_16 +NEW res.country.state: base.state_uy_17 +NEW res.country.state: base.state_uy_18 +NEW res.country.state: base.state_uy_19 +# NOTHING TO DO: noupdate records + +NEW res.currency: base.SLE (noupdate) +# NOTHING TO DO: new record + +DEL res.groups: base.group_private_addresses +NEW res.lang: base.lang_en_NZ +NEW res.lang: base.lang_es_419 +# NOTHING TO DO: noupdate records