gmao/migrations/versions/t5h6i7j8k9l0_c4_completion.py

38 lines
1.4 KiB
Python

"""C4 completion: explicit copier meter roles and order cancellation audit.
Revision ID: t5h6i7j8k9l0
Revises: s4g5h6i7j8k9
"""
from alembic import op
import sqlalchemy as sa
revision = "t5h6i7j8k9l0"
down_revision = "s4g5h6i7j8k9"
branch_labels = None
depends_on = None
def upgrade():
op.add_column("meters", sa.Column("contract_role", sa.String(length=20), nullable=False, server_default="NONE"))
op.create_check_constraint(
"ck_meter_contract_role",
"meters",
"contract_role in ('COPIER_BW', 'COPIER_COLOR', 'NONE')",
)
op.add_column("consumable_orders", sa.Column("cancelled_at", sa.DateTime(), nullable=True))
op.add_column("consumable_orders", sa.Column("cancelled_by_id", sa.Integer(), nullable=True))
op.add_column("consumable_orders", sa.Column("cancellation_reason", sa.Text(), nullable=True))
op.create_foreign_key(
"fk_consumable_orders_cancelled_by",
"consumable_orders", "users", ["cancelled_by_id"], ["id"], ondelete="SET NULL",
)
def downgrade():
op.drop_constraint("fk_consumable_orders_cancelled_by", "consumable_orders", type_="foreignkey")
op.drop_column("consumable_orders", "cancellation_reason")
op.drop_column("consumable_orders", "cancelled_by_id")
op.drop_column("consumable_orders", "cancelled_at")
op.drop_constraint("ck_meter_contract_role", "meters", type_="check")
op.drop_column("meters", "contract_role")