mirror of
https://github.com/GSA/notifications-api.git
synced 2026-09-02 17:48:36 -04:00
82 lines
3.2 KiB
Python
82 lines
3.2 KiB
Python
"""empty message
|
|
|
|
Revision ID: 0033_correct_permission_enums
|
|
Revises: 0032_update_permission_to_enum
|
|
Create Date: 2016-03-02 15:00:25.358153
|
|
|
|
"""
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = '0033_correct_permission_enums'
|
|
down_revision = '0032_update_permission_to_enum'
|
|
|
|
import uuid
|
|
from datetime import datetime
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
def add_default_permissions(conn, permissions):
|
|
user_services = conn.execute("SELECT * FROM user_to_service").fetchall()
|
|
for entry in user_services:
|
|
for p in permissions:
|
|
id_ = uuid.uuid4()
|
|
created_at = datetime.now().isoformat().replace('T', ' ')
|
|
conn.execute((
|
|
"INSERT INTO permissions (id, user_id, service_id, permission, created_at)"
|
|
" VALUES ('{}', '{}', '{}', '{}', '{}')").format(id_, entry[0], entry[1], p, created_at))
|
|
|
|
|
|
def upgrade():
|
|
# Since there are no specific permissions set for services yet
|
|
# we can just remove all and re-add all.
|
|
### commands auto generated by Nick - please adjust! ###
|
|
new_permissions = ['manage_users',
|
|
'manage_templates',
|
|
'manage_settings',
|
|
'send_texts',
|
|
'send_emails',
|
|
'send_letters',
|
|
'manage_api_keys',
|
|
'access_developer_docs']
|
|
conn = op.get_bind()
|
|
conn.execute("DELETE FROM permissions")
|
|
op.drop_constraint('uix_service_user_permission', 'permissions', type_='unique')
|
|
op.drop_column('permissions', 'permission')
|
|
try:
|
|
sa.Enum(name='permission_types').drop(conn, checkfirst=False)
|
|
except:
|
|
pass
|
|
permission_types = sa.Enum(*new_permissions, name='permission_types')
|
|
permission_types.create(op.get_bind())
|
|
op.add_column('permissions', sa.Column('permission', permission_types, nullable=False))
|
|
add_default_permissions(conn, new_permissions)
|
|
op.alter_column('permissions', 'permission', nullable=False)
|
|
op.create_unique_constraint('uix_service_user_permission', 'permissions', ['service_id', 'user_id', 'permission'])
|
|
### end Alembic commands ###
|
|
|
|
|
|
def downgrade():
|
|
### commands auto generated by Nick - please adjust! ###
|
|
old_permissions = ['manage_service',
|
|
'send_messages',
|
|
'manage_api_keys',
|
|
'manage_templates',
|
|
'manage_team',
|
|
'view_activity']
|
|
conn = op.get_bind()
|
|
conn.execute("DELETE FROM permissions")
|
|
op.drop_constraint('uix_service_user_permission', 'permissions', type_='unique')
|
|
op.drop_column('permissions', 'permission')
|
|
try:
|
|
sa.Enum(name='permission_types').drop(conn, checkfirst=False)
|
|
except:
|
|
pass
|
|
permission_types = sa.Enum(*old_permissions, name='permission_types')
|
|
permission_types.create(op.get_bind())
|
|
op.add_column('permissions', sa.Column('permission', permission_types, nullable=False))
|
|
add_default_permissions(conn, old_permissions)
|
|
op.alter_column('permissions', 'permission', nullable=False)
|
|
op.create_unique_constraint('uix_service_user_permission', 'permissions', ['service_id', 'user_id', 'permission'])
|
|
### end Alembic commands ###
|