"""empty message Revision ID: 0021_add_delivered_failed_counts Revises: 0020_template_history_fix Create Date: 2016-05-23 15:05:25.109346 """ # revision identifiers, used by Alembic. revision = '0021_add_delivered_failed_counts' down_revision = '0020_template_history_fix' from alembic import op import sqlalchemy as sa def upgrade(): ### commands auto generated by Alembic - please adjust! ### op.add_column('jobs', sa.Column('notifications_delivered', sa.Integer(), nullable=True)) op.add_column('jobs', sa.Column('notifications_failed', sa.Integer(), nullable=True)) conn = op.get_bind() results = conn.execute("select distinct job_id from notifications") res = results.fetchall() for x in res: if x.job_id: op.execute("update jobs set notifications_delivered = (" "select count(status) from notifications where status = 'delivered' and job_id = '{}' " "group by job_id)" "where jobs.id = '{}'".format(x.job_id, x.job_id)) op.execute("update jobs set notifications_failed = (" "select count(status) from notifications " "where status in ('failed','technical-failure', 'temporary-failure', 'permanent-failure') " "and job_id = '{}' group by job_id)" "where jobs.id = '{}'".format(x.job_id, x.job_id)) op.execute("update jobs set notifications_delivered = 0 where notifications_delivered is null") op.execute("update jobs set notifications_failed = 0 where notifications_failed is null") op.alter_column('jobs', 'notifications_delivered', nullable=False) op.alter_column('jobs', 'notifications_failed', nullable=False) ### end Alembic commands ### def downgrade(): ### commands auto generated by Alembic - please adjust! ### op.drop_column('jobs', 'notifications_failed') op.drop_column('jobs', 'notifications_delivered') ### end Alembic commands ###