addons-cm/website_sale_aplicoop/migrations/18.0.1.0.3/post-migrate.py

43 lines
1.7 KiB
Python

"""Remove legacy pickup_slot_id column from sale_order.
This migration drops the unused pickup_slot_id column which used to store a
snapshot of the assigned slot on each sale.order. We no longer persist that
reference; keep a human readable `pickup_slot_label` instead.
"""
import logging
_logger = logging.getLogger(__name__)
def migrate(cr, version):
# Raw SQL is used to ensure the column is dropped even if foreign key
# constraints exist. We try to drop the FK constraint first and then the
# column. Use IF EXISTS to avoid errors on already-migrated DBs.
try:
# Try dropping common FK constraint name (Postgres naming)
cr.execute("""
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM pg_constraint
WHERE conrelid = 'sale_order'::regclass
AND conname = 'sale_order_pickup_slot_id_fkey'
) THEN
ALTER TABLE sale_order DROP CONSTRAINT sale_order_pickup_slot_id_fkey;
END IF;
END$$;
""")
except Exception as exc: # pragma: no cover - DB-level migration safeguard
# Not critical; constraint may have different name or not exist
_logger.debug(
"Could not drop FK constraint for sale_order.pickup_slot_id: %s", exc
)
try:
cr.execute("ALTER TABLE sale_order DROP COLUMN IF EXISTS pickup_slot_id;")
except Exception as exc: # pragma: no cover - DB-level migration safeguard
# If the column cannot be dropped (e.g. referenced elsewhere), log and
# continue; DB admins can drop manually if needed.
_logger.warning("Could not drop column sale_order.pickup_slot_id: %s", exc)