mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-11 07:42:20 -05:00
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
"""
|
|
|
|
Revision ID: 0359_more_permissions
|
|
Revises: 0358_operator_channel
|
|
Create Date: 2021-06-15 17:47:16.871071
|
|
|
|
"""
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision = "0359_more_permissions"
|
|
down_revision = "0358_operator_channel"
|
|
|
|
enum_name = "permission_types"
|
|
tmp_name = "tmp_" + enum_name
|
|
|
|
old_options = (
|
|
"manage_users",
|
|
"manage_templates",
|
|
"manage_settings",
|
|
"send_texts",
|
|
"send_emails",
|
|
"send_letters",
|
|
"manage_api_keys",
|
|
"platform_admin",
|
|
"view_activity",
|
|
)
|
|
old_type = sa.Enum(*old_options, name=enum_name)
|
|
|
|
|
|
def upgrade():
|
|
# ALTER TYPE must be run outside of a transaction block (see link below for details)
|
|
# https://alembic.sqlalchemy.org/en/latest/api/runtime.html#alembic.runtime.migration.MigrationContext.autocommit_block
|
|
with op.get_context().autocommit_block():
|
|
op.execute("ALTER TYPE permission_types ADD VALUE 'create_broadcasts'")
|
|
op.execute("ALTER TYPE permission_types ADD VALUE 'approve_broadcasts'")
|
|
op.execute("ALTER TYPE permission_types ADD VALUE 'cancel_broadcasts'")
|
|
op.execute("ALTER TYPE permission_types ADD VALUE 'reject_broadcasts'")
|
|
|
|
|
|
def downgrade():
|
|
op.execute(
|
|
"DELETE FROM permissions WHERE permission in "
|
|
"('create_broadcasts', 'approve_broadcasts', 'cancel_broadcasts', 'reject_broadcasts')"
|
|
)
|
|
|
|
op.execute(f"ALTER TYPE {enum_name} RENAME TO {tmp_name}")
|
|
old_type.create(op.get_bind())
|
|
op.execute(
|
|
f"ALTER TABLE permissions ALTER COLUMN permission TYPE {enum_name} USING permission::text::{enum_name}"
|
|
)
|
|
op.execute(f"DROP TYPE {tmp_name}")
|