Add phase 1 client consultant referral and linkage
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
"""Phase 1 client-consultant referral and communication linkage.
|
||||
|
||||
Revision ID: 20260722_phase1_client_consultant_linkage
|
||||
Revises: 20260720_document_vps_auto_cleanup
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision = "20260722_phase1_client_consultant_linkage"
|
||||
down_revision = "20260720_document_vps_auto_cleanup"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
def upgrade() -> None:
|
||||
with op.batch_alter_table("clients") as batch:
|
||||
batch.add_column(sa.Column("referred_by_consultant_id", sa.Integer(), nullable=True))
|
||||
batch.add_column(sa.Column("referral_date", sa.Date(), nullable=True))
|
||||
batch.add_column(sa.Column("referral_reference", sa.String(length=200), nullable=True))
|
||||
batch.add_column(sa.Column("referral_status", sa.String(length=30), nullable=False, server_default="active"))
|
||||
batch.add_column(sa.Column("communication_routing_mode", sa.String(length=30), nullable=False, server_default="client_and_consultant"))
|
||||
batch.create_foreign_key("fk_clients_referred_by_consultant", "consultant_profiles", ["referred_by_consultant_id"], ["id"], ondelete="SET NULL")
|
||||
batch.create_index("ix_clients_referred_by_consultant_id", ["referred_by_consultant_id"], unique=False)
|
||||
batch.create_index("ix_clients_referral_status", ["referral_status"], unique=False)
|
||||
batch.create_index("ix_clients_communication_routing_mode", ["communication_routing_mode"], unique=False)
|
||||
additions = [
|
||||
("can_view_engagements", True), ("can_view_task_status", True), ("can_view_assignee", True),
|
||||
("can_view_document_requests", True), ("can_upload_documents", True),
|
||||
("can_reply_to_clarifications", True), ("can_view_filing_details", True),
|
||||
("can_view_final_documents", True), ("can_view_permanent_documents", False),
|
||||
("can_receive_notifications", True), ("can_act_for_client", True),
|
||||
]
|
||||
with op.batch_alter_table("client_consultant_links") as batch:
|
||||
for name, default in additions:
|
||||
batch.add_column(sa.Column(name, sa.Boolean(), nullable=False, server_default=sa.true() if default else sa.false()))
|
||||
batch.add_column(sa.Column("effective_from", sa.Date(), nullable=True))
|
||||
batch.add_column(sa.Column("effective_to", sa.Date(), nullable=True))
|
||||
|
||||
def downgrade() -> None:
|
||||
with op.batch_alter_table("client_consultant_links") as batch:
|
||||
batch.drop_column("effective_to")
|
||||
batch.drop_column("effective_from")
|
||||
for name in ["can_act_for_client", "can_receive_notifications", "can_view_permanent_documents", "can_view_final_documents", "can_view_filing_details", "can_reply_to_clarifications", "can_upload_documents", "can_view_document_requests", "can_view_assignee", "can_view_task_status", "can_view_engagements"]:
|
||||
batch.drop_column(name)
|
||||
with op.batch_alter_table("clients") as batch:
|
||||
batch.drop_index("ix_clients_communication_routing_mode")
|
||||
batch.drop_index("ix_clients_referral_status")
|
||||
batch.drop_index("ix_clients_referred_by_consultant_id")
|
||||
batch.drop_constraint("fk_clients_referred_by_consultant", type_="foreignkey")
|
||||
batch.drop_column("communication_routing_mode")
|
||||
batch.drop_column("referral_status")
|
||||
batch.drop_column("referral_reference")
|
||||
batch.drop_column("referral_date")
|
||||
batch.drop_column("referred_by_consultant_id")
|
||||
Reference in New Issue
Block a user