Files

83 lines
3.0 KiB
Python

# Copyright 2025 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openupgradelib import openupgrade
@openupgrade.migrate()
def migrate(cr, version):
# Workaround to execute the migration script without errors
# see https://github.com/odoo/odoo/blob/2a839ef1ed09c36f27ce7536ca3052d9f65ceed9/odoo/modules/migration.py#L252-L256
env = cr
env.cr.execute(
"""
SELECT imf.model
FROM ir_model_fields AS imf
WHERE imf.name = 'review_ids'
AND imf.ttype = 'one2many'
AND imf.model != 'tier.validation'
"""
)
for (model_name,) in env.cr.fetchall():
table_name = model_name.replace(".", "_")
# validation_status column
if not openupgrade.column_exists(env.cr, table_name, "validation_status"):
openupgrade.logged_query(
env.cr,
f"""
ALTER TABLE {table_name}
ADD COLUMN IF NOT EXISTS validation_status VARCHAR
""",
)
openupgrade.logged_query(
env.cr,
f"""
UPDATE {table_name} SET validation_status = 'no'
""",
)
openupgrade.logged_query(
env.cr,
f"""
UPDATE {table_name} SET validation_status = 'rejected'
WHERE validation_status = 'no' AND id IN (
SELECT DISTINCT(tr.res_id)
FROM tier_review AS tr
WHERE tr.model = '{model_name}' AND tr.status = 'rejected'
)
""",
)
openupgrade.logged_query(
env.cr,
f"""
UPDATE {table_name} SET validation_status = 'pending'
WHERE validation_status = 'no' AND id IN (
SELECT DISTINCT(tr.res_id)
FROM tier_review AS tr
WHERE tr.model = '{model_name}' AND tr.status = 'pending'
)
""",
)
openupgrade.logged_query(
env.cr,
f"""
UPDATE {table_name} SET validation_status = 'waiting'
WHERE validation_status = 'no' AND id IN (
SELECT DISTINCT(tr.res_id)
FROM tier_review AS tr
WHERE tr.model = '{model_name}' AND tr.status = 'waiting'
)
""",
)
openupgrade.logged_query(
env.cr,
f"""
UPDATE {table_name} SET validation_status = 'validated'
WHERE validation_status = 'no' AND id IN (
SELECT DISTINCT(tr.res_id)
FROM tier_review AS tr
WHERE tr.model = '{model_name}'
AND tr.status IN ('approved', 'forwarded')
)
""",
)