luthor/luthor/alembic/versions/87a06eaadd34_finish_import.py

367 lines
12 KiB
Python

"""Finish Import
Revision ID: 87a06eaadd34
Revises: 74058d75b7a0
Create Date: 2020-12-31 08:49:38.153235
"""
import sqlalchemy as sa
from alembic import op
from sqlalchemy import column, select, table
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = "87a06eaadd34"
down_revision = "74058d75b7a0"
branch_labels = None
depends_on = None
def update_acts():
cases = table(
"cases",
column("act_id", postgresql.UUID(as_uuid=True)),
column("old_act_id", sa.Integer()),
)
acts = table("acts", column("id", postgresql.UUID(as_uuid=True)), column("old_id", sa.Integer()))
op.execute(cases.update(values={"act_id": select([acts.c.id]).where(cases.c.old_act_id == acts.c.old_id)}))
op.drop_column("cases", "old_act_id")
op.drop_column("acts", "old_id")
def update_advocates():
op.drop_column("advocates", "old_id")
def update_case_types():
cases = table(
"cases",
column("case_type_id", postgresql.UUID(as_uuid=True)),
column("old_case_type_id", sa.Integer()),
)
case_types = table(
"case_types",
column("id", postgresql.UUID(as_uuid=True)),
column("old_id", sa.Integer()),
column("name", sa.Unicode(length=255)),
)
op.execute(
cases.update(
values={"case_type_id": select([case_types.c.id]).where(cases.c.old_case_type_id == case_types.c.old_id)}
)
)
# op.execute(case_types.update(values={"name": "Blank"}).where(case_types.c.name == ""))
op.drop_column("cases", "old_case_type_id")
op.drop_column("case_types", "old_id")
# op.alter_column('cases', 'case_type_id', existing_type=postgresql.UUID(), nullable=False)
def update_court_statuses():
cases = table(
"cases",
column("court_status_id", postgresql.UUID(as_uuid=True)),
column("old_court_status_id", sa.Integer()),
)
hearings = table(
"hearings",
column("court_status_id", postgresql.UUID(as_uuid=True)),
column("old_court_status_id", sa.Integer()),
)
court_statuses = table(
"court_statuses",
column("id", postgresql.UUID(as_uuid=True)),
column("old_id", sa.Integer()),
column("name", sa.Unicode(length=255)),
)
op.execute(
cases.update(
values={
"court_status_id": select([court_statuses.c.id]).where(
cases.c.old_court_status_id == court_statuses.c.old_id
)
}
)
)
op.execute(
hearings.update(
values={
"court_status_id": select([court_statuses.c.id]).where(
hearings.c.old_court_status_id == court_statuses.c.old_id
)
}
)
)
# op.execute(court_statuses.update(values={"name": "Blank"}).where(court_statuses.c.name == ""))
op.drop_column("cases", "old_court_status_id")
op.drop_column("hearings", "old_court_status_id")
op.drop_column("court_statuses", "old_id")
# op.alter_column('cases', 'court_status_id', existing_type=postgresql.UUID(), nullable=False)
# op.alter_column('hearings', 'case_id', existing_type=postgresql.UUID(), nullable=False)
def update_courts():
cases = table(
"cases",
column("court_id", postgresql.UUID(as_uuid=True)),
column("old_court_id", sa.Integer()),
)
courts = table("courts", column("id", postgresql.UUID(as_uuid=True)), column("old_id", sa.Integer()))
op.execute(cases.update(values={"court_id": select([courts.c.id]).where(cases.c.old_court_id == courts.c.old_id)}))
op.drop_column("cases", "old_court_id")
op.drop_column("courts", "old_id")
# op.alter_column('cases', 'court_id', existing_type=postgresql.UUID(), nullable=False)
def update_departments():
cases = table(
"cases",
column("department_id", postgresql.UUID(as_uuid=True)),
column("old_department_id", sa.Integer()),
)
offices = table(
"offices",
column("department_id", postgresql.UUID(as_uuid=True)),
column("old_department_id", sa.Integer()),
)
departments = table(
"departments",
column("id", postgresql.UUID(as_uuid=True)),
column("old_id", sa.Integer()),
column("name", sa.Unicode(length=255)),
)
op.execute(
cases.update(
values={
"department_id": select([departments.c.id]).where(cases.c.old_department_id == departments.c.old_id)
}
)
)
op.execute(
offices.update(
values={
"department_id": select([departments.c.id]).where(offices.c.old_department_id == departments.c.old_id)
}
)
)
# op.execute(departments.update(values={"name": "Blank"}).where(departments.c.name == ""))
op.drop_column("cases", "old_department_id")
op.drop_column("offices", "old_department_id")
op.drop_column("departments", "old_id")
def update_natures():
cases = table(
"cases",
column("nature_id", postgresql.UUID(as_uuid=True)),
column("old_nature_id", sa.Integer()),
)
natures = table("natures", column("id", postgresql.UUID(as_uuid=True)), column("old_id", sa.Integer()))
op.execute(
cases.update(values={"nature_id": select([natures.c.id]).where(cases.c.old_nature_id == natures.c.old_id)})
)
op.drop_column("cases", "old_nature_id")
op.drop_column("natures", "old_id")
def update_office_statuses():
cases = table(
"cases",
column("office_status_id", postgresql.UUID(as_uuid=True)),
column("old_office_status_id", sa.Integer()),
)
office_statuses = table(
"office_statuses", column("id", postgresql.UUID(as_uuid=True)), column("old_id", sa.Integer())
)
op.execute(
cases.update(
values={
"office_status_id": select([office_statuses.c.id]).where(
cases.c.old_office_status_id == office_statuses.c.old_id
)
}
)
)
op.drop_column("cases", "old_office_status_id")
op.drop_column("office_statuses", "old_id")
def update_offices():
cases = table(
"cases",
column("office_id", postgresql.UUID(as_uuid=True)),
column("old_office_id", sa.Integer()),
)
offices = table("offices", column("id", postgresql.UUID(as_uuid=True)), column("old_id", sa.Integer()))
op.execute(
cases.update(values={"office_id": select([offices.c.id]).where(cases.c.old_office_id == offices.c.old_id)})
)
op.drop_column("cases", "old_office_id")
op.drop_column("offices", "old_id")
def update_cases():
hearings = table(
"hearings",
column("case_id", postgresql.UUID(as_uuid=True)),
column("old_case_id", sa.Integer()),
)
cases = table("cases", column("id", postgresql.UUID(as_uuid=True)), column("old_id", sa.Integer()))
op.execute(
hearings.update(values={"case_id": select([cases.c.id]).where(hearings.c.old_case_id == cases.c.old_id)})
)
op.drop_column("hearings", "old_case_id")
op.drop_column("cases", "old_id")
def update_auth():
users = table(
"users",
column("id", postgresql.UUID(as_uuid=True)),
column("old_id", sa.Integer()),
column("name", sa.Unicode(length=255)),
)
roles = table(
"roles",
column("id", postgresql.UUID(as_uuid=True)),
column("old_id", sa.Integer()),
column("name", sa.Unicode(length=255)),
)
permissions = table(
"permissions",
column("id", postgresql.UUID(as_uuid=True)),
column("old_id", sa.Integer()),
column("name", sa.Unicode(length=255)),
)
ur = table(
"user_roles",
column("id", postgresql.UUID(as_uuid=True)),
column("user_id", postgresql.UUID(as_uuid=True)),
column("role_id", postgresql.UUID(as_uuid=True)),
)
rp = table(
"role_permissions",
column("id", postgresql.UUID(as_uuid=True)),
column("role_id", postgresql.UUID(as_uuid=True)),
column("old_user_id", sa.Integer()),
column("permission_id", postgresql.UUID(as_uuid=True)),
column("old_permission_id", sa.Integer()),
)
op.execute(roles.insert().from_select([roles.c.old_id, roles.c.name], select([users.c.old_id, users.c.name])))
op.execute(
ur.insert().from_select(
[ur.c.user_id, ur.c.role_id],
select([users.c.id, roles.c.id]).select_from(users.join(roles, users.c.old_id == roles.c.old_id)),
)
)
op.execute(rp.update(values={"role_id": select([roles.c.id]).where(rp.c.old_user_id == roles.c.old_id)}))
op.execute(
rp.update(
values={"permission_id": select([permissions.c.id]).where(rp.c.old_permission_id == permissions.c.old_id)}
)
)
op.drop_column("role_permissions", "old_user_id")
op.drop_column("role_permissions", "old_permission_id")
op.drop_column("users", "old_id")
op.drop_column("roles", "old_id")
op.drop_column("permissions", "old_id")
op.execute(rp.delete().where(rp.c.permission_id == None)) # noqa: E711
op.alter_column("role_permissions", "permission_id", existing_type=postgresql.UUID(), nullable=False)
op.alter_column("role_permissions", "role_id", existing_type=postgresql.UUID(), nullable=False)
op.execute(
permissions.update()
.where(permissions.c.name == op.inline_literal("StatusInCourt"))
.values({"name": op.inline_literal("Court Statuses")})
)
op.execute(
permissions.update()
.where(permissions.c.name == op.inline_literal("Statuses"))
.values({"name": op.inline_literal("Office Statuses")})
)
op.execute(
permissions.update()
.where(permissions.c.name == op.inline_literal("CreateUsers"))
.values({"name": op.inline_literal("Users")})
)
op.execute(
permissions.update()
.where(permissions.c.name == op.inline_literal("AssignRoles"))
.values({"name": op.inline_literal("Advocates")})
)
op.execute(
permissions.update()
.where(permissions.c.name == op.inline_literal("CaseTypes"))
.values({"name": op.inline_literal("Case Types")})
)
op.execute(
permissions.update()
.where(permissions.c.name == op.inline_literal("ContactPersons"))
.values({"name": op.inline_literal("Contacts")})
)
op.execute(
permissions.update()
.where(permissions.c.name == op.inline_literal("AllowFeeMenu"))
.values({"name": op.inline_literal("Case Sources")})
)
def update_hearings():
op.drop_column("hearings", "old_id")
def add_case_sources():
sources = table(
"case_sources",
column("id", postgresql.UUID(as_uuid=True)),
column("name", sa.Unicode(length=255)),
column("prefix", sa.Unicode(length=255)),
)
op.execute(sources.insert().values(name="HLC Cases", prefix="HRC"))
op.execute(sources.insert().values(name="HUDA Cases", prefix="AHC"))
op.execute(sources.insert().values(id="08efc7cc-e4a1-4d24-bcba-58ca9bc29994", name="Private Cases", prefix="APC"))
op.execute(sources.insert().values(name="Board & Corp. Cases", prefix="A"))
op.execute(sources.insert().values(name="Opinion Cases", prefix="AOC"))
op.execute(sources.insert().values(name="Misc", prefix="Misc"))
op.execute(sources.insert().values(name="PAC", prefix="PAC"))
op.execute(sources.insert().values(name="ABC", prefix="ABC"))
cases = table(
"cases",
column("old_office_file_number", sa.Unicode(length=255)),
column("case_source_id", postgresql.UUID(as_uuid=True)),
)
op.execute(
cases.update(
values={
"case_source_id": select([sources.c.id]).where(
cases.c.old_office_file_number.ilike(sources.c.prefix + "-%")
)
}
)
)
op.alter_column('cases', 'case_source_id', existing_type=postgresql.UUID(), nullable=False)
op.drop_column("cases", "old_office_file_number")
op.create_unique_constraint(op.f("uq_cases_office_file_number"), "cases", ["office_file_number", "case_source_id"])
def upgrade():
update_acts()
update_advocates()
update_case_types()
update_court_statuses()
update_courts()
update_departments()
update_natures()
update_office_statuses()
update_offices()
update_cases()
update_auth()
update_hearings()
add_case_sources()
def downgrade():
pass