old_contents: """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 status, 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 status, 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 ###
  
new_contents: """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 ###
  
subject: Remove the status from the group by clause of the update statement.