"""Restrict request.base_payout to be >= 0

Revision ID: 337978f8c75
Revises: c1fc69b629
Create Date: 2014-06-18 14:04:52.963890

"""

# revision identifiers, used by Alembic.
revision = '337978f8c75'
down_revision = 'c1fc69b629'

from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import update, select, table, column


request = table('request',
        column('id', sa.Integer),
        column('base_payout', sa.Float),
)


def upgrade():
    conn = op.get_bind()
    negative_base_payout_id_sel = select([request.c.id])\
            .where(request.c.base_payout < 0.0)
    negative_ids = conn.execute(negative_base_payout_id_sel)
    for result_row in negative_ids:
        negative_id = result_row[0]
        update_stmt = update(request)\
                .where(request.c.id == negative_id)\
                .values({
                        'base_payout': 0.0,
                })
        conn.execute(update_stmt)
    negative_ids.close()


def downgrade():
    # This is a lossy upgrade, no downgrading possible
    pass

Add migration script for enforcing a minimum base_payout of 0
Add migration script for enforcing a minimum base_payout of 0

Should've been committed with c817d4df