Updated migration
* Modified migration to do an in place update of the password revision based on the hash length
This commit is contained in:
parent
3276662c39
commit
76c5c202b1
1 changed files with 48 additions and 1 deletions
|
@ -7,6 +7,8 @@ Created at: 2018-02-24 23:00:32.848575
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
import sqlalchemy.ext.declarative
|
||||||
|
import sqlalchemy.orm.session
|
||||||
from alembic import op
|
from alembic import op
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,6 +17,34 @@ down_revision = '02ef5f73f4ab'
|
||||||
branch_labels = None
|
branch_labels = None
|
||||||
depends_on = None
|
depends_on = None
|
||||||
|
|
||||||
|
Base = sa.ext.declarative.declarative_base()
|
||||||
|
|
||||||
|
|
||||||
|
class User(Base):
|
||||||
|
__tablename__ = 'user'
|
||||||
|
|
||||||
|
AVATAR_GRAVATAR = 'gravatar'
|
||||||
|
|
||||||
|
user_id = sa.Column('id', sa.Integer, primary_key=True)
|
||||||
|
creation_time = sa.Column('creation_time', sa.DateTime, nullable=False)
|
||||||
|
last_login_time = sa.Column('last_login_time', sa.DateTime)
|
||||||
|
version = sa.Column('version', sa.Integer, default=1, nullable=False)
|
||||||
|
name = sa.Column('name', sa.Unicode(50), nullable=False, unique=True)
|
||||||
|
password_hash = sa.Column('password_hash', sa.Unicode(128), nullable=False)
|
||||||
|
password_salt = sa.Column('password_salt', sa.Unicode(32))
|
||||||
|
password_revision = sa.Column('password_revision', sa.SmallInteger,
|
||||||
|
default=0, nullable=False)
|
||||||
|
email = sa.Column('email', sa.Unicode(64), nullable=True)
|
||||||
|
rank = sa.Column('rank', sa.Unicode(32), nullable=False)
|
||||||
|
avatar_style = sa.Column(
|
||||||
|
'avatar_style', sa.Unicode(32), nullable=False,
|
||||||
|
default=AVATAR_GRAVATAR)
|
||||||
|
|
||||||
|
__mapper_args__ = {
|
||||||
|
'version_id_col': version,
|
||||||
|
'version_id_generator': False,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
def upgrade():
|
||||||
op.alter_column('user', 'password_hash',
|
op.alter_column('user', 'password_hash',
|
||||||
|
@ -23,7 +53,24 @@ def upgrade():
|
||||||
existing_nullable=False)
|
existing_nullable=False)
|
||||||
op.add_column('user', sa.Column('password_revision',
|
op.add_column('user', sa.Column('password_revision',
|
||||||
sa.SmallInteger(),
|
sa.SmallInteger(),
|
||||||
nullable=False))
|
nullable=True,
|
||||||
|
default=0))
|
||||||
|
|
||||||
|
session = sa.orm.session.Session(bind=op.get_bind())
|
||||||
|
if session.query(User).count() >= 0:
|
||||||
|
for user in session.query(User).all():
|
||||||
|
password_hash_length = len(user.password_hash)
|
||||||
|
if password_hash_length == 40:
|
||||||
|
user.password_revision = 1
|
||||||
|
elif password_hash_length == 64:
|
||||||
|
user.password_revision = 2
|
||||||
|
else:
|
||||||
|
user.password_revision = 3
|
||||||
|
session.flush()
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
op.alter_column('user', 'password_revision',
|
||||||
|
existing_nullable=True, nullable=False)
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
def downgrade():
|
||||||
|
|
Loading…
Reference in a new issue