From 9f95a6bfdaa12a4e6cf48559f8a156d485a5ebb6 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Mon, 20 Jan 2025 12:06:52 +0100 Subject: [PATCH] fixup! [ADD] base migration --- .../odoo_patch/odoo/modules/migration.py | 3 +- .../scripts/base/18.0.1.3/post-migration.py | 65 +------------------ 2 files changed, 3 insertions(+), 65 deletions(-) diff --git a/openupgrade_framework/odoo_patch/odoo/modules/migration.py b/openupgrade_framework/odoo_patch/odoo/modules/migration.py index b984245b23d7..339b86eb6b1b 100644 --- a/openupgrade_framework/odoo_patch/odoo/modules/migration.py +++ b/openupgrade_framework/odoo_patch/odoo/modules/migration.py @@ -24,5 +24,4 @@ def migrate_module(self, pkg, stage): MigrationManager.migrate_module = migrate_module -# allow (env, version) signatures in migration methods -VALID_MIGRATE_PARAMS.append(("env", "version")) + diff --git a/openupgrade_scripts/scripts/base/18.0.1.3/post-migration.py b/openupgrade_scripts/scripts/base/18.0.1.3/post-migration.py index 2a6af1acc8cc..f36010a51536 100644 --- a/openupgrade_scripts/scripts/base/18.0.1.3/post-migration.py +++ b/openupgrade_scripts/scripts/base/18.0.1.3/post-migration.py @@ -1,71 +1,10 @@ # Copyright 2025 Hunki Enterprises BV # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from openupgradelib import openupgrade - - -def _convert_company_dependent( - env, model_name, field_name, value_expression=None, old_field_id=None -): - """ - Company dependent fields used to live in ir.property, in v18 they are jsonb - dictionaries with company id as key and the company specific value as value - Default values live in ir.default - """ - Model = env[model_name] - Field = ( - env["ir.model.fields"]._get(model_name, field_name) - if not old_field_id - else env["ir.model.fields"].browse(old_field_id) - ) - value_expression = value_expression or ( - "value_%s" - % { - "float": "float", - "boolean": "integer", - "integer": "integer", - "date": "datetime", - "datetime": "datetime", - }.get(Field.ttype, "text") - if Field.ttype != "many2one" - else "SPLIT_PART(value_reference, ',', 2)" - ) - - openupgrade.logged_query( - env.cr, - f"ALTER TABLE {Model._table} ADD COLUMN IF NOT EXISTS {field_name} jsonb", - ) - - openupgrade.logged_query( - env.cr, - f""" - UPDATE {Model._table} SET {field_name}=ir_property_by_company.value - FROM ( - SELECT - SPLIT_PART(res_id, ',', 2)::integer res_id, - JSON_OBJECT_AGG(company_id, {value_expression}) value - FROM ir_property - WHERE - fields_id={old_field_id or Field.id} AND res_id IS NOT NULL - AND company_id IS NOT NULL - GROUP BY res_id - ) ir_property_by_company - WHERE {Model._table}.id=ir_property_by_company.res_id - """, - ) - - env.cr.execute( - f""" - SELECT company_id, {value_expression} FROM ir_property - WHERE - fields_id={old_field_id or Field.id} AND res_id IS NULL - """ - ) - for company_id, value in env.cr.fetchall(): - env["ir.default"].set(model_name, field_name, value, company_id=company_id) +from openupgradelib import openupgrade, openupgrade_180 @openupgrade.migrate() def migrate(env, version): openupgrade.load_data(env, "base", "18.0.1.3/noupdate_changes.xml") - _convert_company_dependent(env, "res.partner", "barcode") + openupgrade_180.convert_company_dependent(env, "res.partner", "barcode")