Public release from ruodoo-project: 19.0 - 2026-05-31 21:19:12 UTC
This commit is contained in:
82
base_tier_validation/migrations/18.0.2.1.0/pre-migration.py
Normal file
82
base_tier_validation/migrations/18.0.2.1.0/pre-migration.py
Normal file
@ -0,0 +1,82 @@
|
||||
# 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')
|
||||
)
|
||||
""",
|
||||
)
|
||||
Reference in New Issue
Block a user