"""change_shared_campaign_table Revision ID: ff55991be102 Revises: fbd61549dfe8 Create Date: 2020-04-07 14:19:47.631811 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = 'ff55991be102' down_revision = 'fbd61549dfe8' branch_labels = None depends_on = None def upgrade(): op.create_table('UserCampaign', sa.Column('id', sa.Integer(), nullable=False), sa.Column('campaign_id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('role', sa.Integer(), nullable=True), sa.Column('shared_by', sa.Integer(), nullable=False, server_default="1"), sa.Column('editable', sa.Boolean(), nullable=False, server_default="FALSE"), sa.PrimaryKeyConstraint('id', name=op.f('pk_UserCampaign')), sa.ForeignKeyConstraint(['campaign_id'], ['Campaign.id'], name=op.f('fk_UserCampaign_campaign_id_Campaign'), ondelete='CASCADE'), sa.ForeignKeyConstraint(['user_id'], ['User.id'], name=op.f('fk_UserCampaign_user_id_User')), sa.ForeignKeyConstraint(['shared_by'], ['User.id'], name=op.f('fk_UserCampaign_shared_by_User')), ) bind = op.get_bind() bind.execute(''' INSERT INTO "UserCampaign"(campaign_id, user_id, editable, shared_by) SELECT campaign_id, user_id, editable, shared_by FROM "SharedCampaign"; ''') bind.execute(''' UPDATE "UserCampaign" as uc SET role = CASE WHEN uc.editable = True THEN 1 ELSE 4 END; ''') op.alter_column('UserCampaign', 'role', existing_type=sa.Integer(), nullable=False) op.create_table('UserCampaignActivityTypeGroup', sa.Column('user_campaign_id', sa.Integer(), nullable=False), sa.Column('activity_type_group_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['activity_type_group_id'], ['ActivityTypeGroup.id'], name=op.f('fk_UserCampaignActivityTypeGroup_activity_type_group_id_ActivityTypeGroup')), sa.ForeignKeyConstraint(['user_campaign_id'], ['UserCampaign.id'], name=op.f('fk_UserCampaignActivityTypeGroup_user_campaign_id_UserCampaign'), ondelete='CASCADE'), sa.PrimaryKeyConstraint('user_campaign_id', 'activity_type_group_id', name=op.f('pk_UserCampaignActivityTypeGroup')), ) op.drop_table('SharedCampaign') def downgrade(): op.create_table('SharedCampaign', sa.Column('id', sa.Integer(), nullable=False), sa.Column('campaign_id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('shared_by', sa.Integer(), nullable=False, server_default="1"), sa.Column('editable', sa.Boolean(), nullable=False, server_default="FALSE"), sa.PrimaryKeyConstraint('id', name=op.f('pk_UserCampaign')), sa.ForeignKeyConstraint(['campaign_id'], ['Campaign.id'], name=op.f('fk_SharedCampaign_campaign_id_Campaign'), ondelete='CASCADE'), sa.ForeignKeyConstraint(['user_id'], ['User.id'], name=op.f('fk_SharedCampaign_user_id_User')), sa.ForeignKeyConstraint(['shared_by'], ['User.id'], name=op.f('fk_SharedCampaign_shared_by_User')), ) bind = op.get_bind() bind.execute(''' INSERT INTO "SharedCampaign"(campaign_id, user_id, editable, shared_by) SELECT campaign_id, user_id, editable, shared_by FROM "UserCampaign"; ''') op.drop_table('UserCampaign') op.drop_table('UserCampaignActivityTypeGroup')