"""spam_threshold in percent

Revision ID: 27ae2f102682
Revises: dc8c25cf5b98
Create Date: 2016-09-30 08:06:15.025190

"""

# revision identifiers, used by Alembic.
revision = '27ae2f102682'
down_revision = 'dc8c25cf5b98'

from alembic import op
import sqlalchemy as sa


user_table = sa.Table(
    'user',
    sa.MetaData(),
    sa.Column('email', sa.String(255), primary_key=True),
    sa.Column('spam_threshold', sa.Numeric())
)


def upgrade():
    connection = op.get_bind()
    # spam_threshold is a X/15 based value, we're converting it to percent.
    for user in connection.execute(user_table.select()):
         connection.execute(
            user_table.update().where(
                user_table.c.email == user.email
            ).values(
                spam_threshold=int(100. * float(user.spam_threshold or 0.) / 15.)
            )
         )
    # set default to 80%
    with op.batch_alter_table('user') as batch:
        batch.alter_column('spam_threshold', default=80.)

def downgrade():
    connection = op.get_bind()
    # spam_threshold is a X/15 based value, we're converting it from percent.
    for user in connection.execute(user_table.select()):
         connection.execute(
            user_table.update().where(
                user_table.c.email == user.email
            ).values(
                spam_threshold=int(15. * float(user.spam_threshold or 0.) / 100.)
            )
         )
    # set default to 10/15
    with op.batch_alter_table('user') as batch:
        batch.alter_column('spam_threshold', default=10.)
