"""add_initial_phases_to_campaigns Revision ID: 435069151379 Revises: 9b3c11623f12 Create Date: 2020-01-09 16:31:00.112064 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = '435069151379' down_revision = '9b3c11623f12' branch_labels = None depends_on = None def upgrade(): bind = op.get_bind() query_results = bind.execute('''SELECT id FROM "Campaign"''') [assign_default_phase_to_campaign(result[0]) for result in query_results] def assign_default_phase_to_campaign(campaign_id: int): bind = op.get_bind() result = bind.execute(''' INSERT INTO "CampaignPhase" (name, campaign_id, "order") VALUES ('Phase 1', {0}, 0) RETURNING id '''.format(campaign_id)) phase_id = result.first()[0] query_results = bind.execute('''SELECT id FROM "Activity" WHERE campaign_id = {0}'''.format(campaign_id)) [assign_phase_to_campaign_activity(result[0], phase_id) for result in query_results] def assign_phase_to_campaign_activity(activity_id: int, phase_id: int): bind = op.get_bind() bind.execute(''' INSERT INTO "CampaignPhaseActivity" (phase_id, activity_id) VALUES ({0}, {1}) '''.format(phase_id, activity_id)) def downgrade(): bind = op.get_bind() bind.execute('''DELETE FROM "CampaignPhase"''')