From bd898a4526def5188f0fdcab663c4b8d594119db Mon Sep 17 00:00:00 2001 From: Nicholas Staples Date: Wed, 2 Mar 2016 10:26:20 +0000 Subject: [PATCH] Upgrade and downgrade now works. Fix bug with repeated upgrade and downgrade. Fix script revision number. --- .../0032_update_permission_to_enum.py | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/migrations/versions/0032_update_permission_to_enum.py b/migrations/versions/0032_update_permission_to_enum.py index 9c0d7f33d..0bf9d0ea4 100644 --- a/migrations/versions/0032_update_permission_to_enum.py +++ b/migrations/versions/0032_update_permission_to_enum.py @@ -1,13 +1,13 @@ """empty message -Revision ID: 49380ad07c88 +Revision ID: 0032_update_permission_to_enum Revises: 0031_add_manage_team_permission Create Date: 2016-03-01 17:08:12.184393 """ # revision identifiers, used by Alembic. -revision = '49380ad07c88' +revision = '0032_update_permission_to_enum' down_revision = '0031_add_manage_team_permission' from alembic import op @@ -17,25 +17,32 @@ import sqlalchemy as sa def upgrade(): ### commands auto generated by Alembic - please adjust! ### conn = op.get_bind() - permissions = conn.execute("SELECT (id, permission) FROM permissions").fetchall() - print(permissions) - op.drop_column('permissions', 'permission') + permissions = conn.execute("SELECT id, permission FROM permissions").fetchall() op.drop_constraint('uix_service_user_permission', 'permissions', type_='unique') - op.add_column('permissions', sa.Column('permission', sa.Enum('manage_service', 'send_messages', 'manage_api_keys', 'manage_templates', 'manage_team', 'view_activity', name='permission_types'), nullable=False)) + op.drop_column('permissions', 'permission') + permission_types = sa.Enum('manage_service', 'send_messages', 'manage_api_keys', 'manage_templates', 'manage_team', 'view_activity', name='permission_types') + permission_types.create(op.get_bind()) + op.add_column('permissions', sa.Column('permission', permission_types, nullable=True)) for p in permissions: - conn.execute("UPDATE permissions SET permission='{}' WHERE ID='{}'".format(p[1], p[0])) - op.create_unique_constraint('uix_service_user_permission', 'permissions', ['service_id', 'user_id', '_permission']) + conn.execute("UPDATE permissions SET permission='{}' WHERE id='{}'".format(str(p[1]), str(p[0]))) + op.create_unique_constraint('uix_service_user_permission', 'permissions', ['service_id', 'user_id', 'permission']) + op.alter_column('permissions', 'permission', nullable=False) ### end Alembic commands ### def downgrade(): ### commands auto generated by Alembic - please adjust! ### conn = op.get_bind() - permissions = conn.execute("SELECT (id, permission) FROM permissions").fetchall() - op.drop_column('permissions', 'permission') + permissions = conn.execute("SELECT id, permission FROM permissions").fetchall() op.drop_constraint('uix_service_user_permission', 'permissions', type_='unique') - op.add_column('permissions', sa.Column('permission', sa.VARCHAR(length=255), autoincrement=False, nullable=False)) + op.drop_column('permissions', 'permission') + try: + sa.Enum(name='permission_types').drop(conn, checkfirst=False) + except: + pass + op.add_column('permissions', sa.Column('permission', sa.VARCHAR(length=255), autoincrement=False, nullable=True)) for p in permissions: - conn.execute("UPDATE permissions SET permission='{}' WHERE ID='{}'".format(p[1], p[0])) + conn.execute("UPDATE permissions SET permission='{}' WHERE ID='{}'".format(str(p[1]), str(p[0]))) op.create_unique_constraint('uix_service_user_permission', 'permissions', ['service_id', 'user_id', 'permission']) + op.alter_column('permissions', 'permission', nullable=False) ### end Alembic commands ###