From a0e7e573201ef9db0202bfc72e71ced389cf3384 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sat, 15 May 2021 16:58:39 +0200 Subject: [PATCH] [FIX] base_comment_template: Incorrect m2m column names + script + avoid FK constraint - The name of the columns were swapped, so better to fix it for avoiding mistakes due to this. - Migration script for detecting the condition and swap column names. - On v12 > v13 migration, include JOINs for avoiding FK constraint, which `ON CONFLICT` clause doesn't protect. --- .../migrations/13.0.1.0.0/post-migration.py | 3 +++ .../migrations/13.0.3.0.0/pre-migration.py | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 base_comment_template/migrations/13.0.3.0.0/pre-migration.py diff --git a/base_comment_template/migrations/13.0.1.0.0/post-migration.py b/base_comment_template/migrations/13.0.1.0.0/post-migration.py index e1dce39d69..72123749ba 100644 --- a/base_comment_template/migrations/13.0.1.0.0/post-migration.py +++ b/base_comment_template/migrations/13.0.1.0.0/post-migration.py @@ -16,6 +16,9 @@ def migrate(env, version): SPLIT_PART(ip.value_reference, ',', 2)::int AS base_comment_template_id FROM ir_property ip JOIN ir_model_fields imf ON ip.fields_id = imf.id + JOIN res_partner rp ON rp.id = SPLIT_PART(ip.res_id, ',', 2)::int + JOIN base_comment_template bct + ON bct.id = SPLIT_PART(ip.value_reference, ',', 2)::int WHERE imf.name = 'property_comment_template_id' AND imf.model = 'res.partner' AND ip.res_id IS NOT NULL diff --git a/base_comment_template/migrations/13.0.3.0.0/pre-migration.py b/base_comment_template/migrations/13.0.3.0.0/pre-migration.py new file mode 100644 index 0000000000..2ed210690d --- /dev/null +++ b/base_comment_template/migrations/13.0.3.0.0/pre-migration.py @@ -0,0 +1,21 @@ +# Copyright 2021 Tecnativa - Pedro M: Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade # pylint: disable=W7936 + + +@openupgrade.migrate() +def migrate(env, version): + if openupgrade.table_exists(env.cr, "base_comment_template_res_partner_rel"): + # Swap column names, as they were incorrect + env.cr.execute( + "ALTER TABLE base_comment_template_res_partner_rel " + "RENAME base_comment_template_id TO temp" + ) + env.cr.execute( + "ALTER TABLE base_comment_template_res_partner_rel " + "RENAME res_partner_id TO base_comment_template_id" + ) + env.cr.execute( + "ALTER TABLE base_comment_template_res_partner_rel " + "RENAME temp TO res_partner_id" + )