Fix remaining migration scripts and remove initdb/flushdb from manage.py

This commit is contained in:
kaiyou
2017-09-17 11:55:12 +02:00
parent 829e4a5e28
commit a96478c496
5 changed files with 70 additions and 62 deletions

View File

@@ -13,23 +13,35 @@ down_revision = '27ae2f102682'
from alembic import op
import sqlalchemy as sa
from mailu.admin import models
from mailu import db
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()
# Make sure that every value is already an Integer
for user in models.User.query.all():
user.spam_threshold = int(user.spam_threshold)
db.session.commit()
for user in connection.execute(user_table.select()):
connection.execute(
user_table.update().where(
user_table.c.email == user.email
).values(
spam_threshold=int(user.spam_threshold)
)
)
# Migrate the table
with op.batch_alter_table('user') as batch:
batch.alter_column(
'spam_threshold', existing_type=db.Numeric(), type_=db.Integer())
'spam_threshold', existing_type=sa.Numeric(), type_=sa.Integer())
def downgrade():
# Migrate the table
with op.batch_alter_table('user') as batch:
batch.alter_column(
'spam_threshold', existing_type=db.Integer(), type_=db.Numeric())
'spam_threshold', existing_type=sa.Integer(), type_=sa.Numeric())