Files
Odoo-Modules/fusion_plating/fusion_plating_configurator/migrations/19.0.15.0.0/post-migration.py
gsinghpal d9f58b9851 changes
2026-04-26 15:05:17 -04:00

57 lines
1.9 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1
# Sub 9 — Process Variants per Part. Runs on upgrade to 19.0.15.0.0.
#
# For every part that had a default_process_id, mark its root node as
# the default variant and seed a friendly label. Idempotent (NULL guards).
import logging
_logger = logging.getLogger(__name__)
def migrate(cr, version):
if not version:
return # Fresh install — nothing to migrate
_logger.info("Sub 9: backfilling process variant flags")
# Step 1: Mark each part's existing default_process_id root as the
# default variant. The flag is cleared on every other root so we
# land in a consistent "exactly one default" state.
cr.execute("""
UPDATE fusion_plating_process_node
SET is_default_variant = FALSE
WHERE parent_id IS NULL
AND node_type = 'recipe'
AND part_catalog_id IS NOT NULL
""")
_logger.info("Sub 9: cleared is_default_variant on %d roots", cr.rowcount)
cr.execute("""
UPDATE fusion_plating_process_node node
SET is_default_variant = TRUE
FROM fp_part_catalog part
WHERE part.default_process_id = node.id
AND node.parent_id IS NULL
AND node.node_type = 'recipe'
AND node.part_catalog_id = part.id
""")
_logger.info(
"Sub 9: flagged is_default_variant on %d roots (one per part with default_process_id)",
cr.rowcount,
)
# Step 2: Seed variant_label='Default' on the now-flagged variants
# so the picker shows something readable. Only fills NULL/empty.
cr.execute("""
UPDATE fusion_plating_process_node
SET variant_label = 'Default'
WHERE is_default_variant = TRUE
AND (variant_label IS NULL OR variant_label = '')
""")
_logger.info("Sub 9: seeded variant_label='Default' on %d records", cr.rowcount)
_logger.info("Sub 9: migration complete")