43 lines
1.7 KiB
Python
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)
|