a52365776f0c_upgrade_all.py
2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"""upgrade_all
Revision ID: a52365776f0c
Revises: a01dc09faec0
Create Date: 2023-03-06 20:29:10.252018
"""
# revision identifiers, used by Alembic.
revision = 'a52365776f0c'
down_revision = 'a01dc09faec0'
branch_labels = None
depends_on = None
import sqlalchemy as sa
from alembic import op
def upgrade():
schema = 'public'
context = op.get_context()
helpers = context.opts['helpers']
if not helpers.table_has_column('groups', 'group_name', schema):
op.add_column('groups',
sa.Column('group_name', sa.String(50)), schema=schema)
if not helpers.table_has_column('groups', 'description', schema):
op.add_column('groups',
sa.Column('description', sa.TEXT), schema=schema)
if not helpers.table_has_column('groups', 'member_count', schema):
op.add_column('groups',
sa.Column('member_count', sa.Integer), schema=schema)
# table = sa.sql.table(
# "users", sa.sql.column("userid", sa.String(25)),
# sa.sql.column("user_name", sa.String(64))
# )
if helpers.table_has_column("users", "userid", schema=schema):
op.execute("update users set user_name=userid, status=disabled+1 where user_name is null")
op.execute("update users set status=0 where status>1")
op.execute(
"""update groups set group_name=kode, description=nama, member_count=0
where kode is not null and nama is not null
""")
op.execute(
"""update groups set group_name='Superuser' where kode='sa'""")
from opensipkd.models import User, Base, DBSession, init_model
engine = op.get_bind()
DBSession.configure(bind=engine)
Base.metadata.bind = engine
init_model()
user_table = sa.Table(
'users', sa.MetaData(schema="public"),
autoload_with=engine,
autoload_replace=True
)
result = engine.execute(sa.select(user_table))
keys = user_table.columns.keys()
rows = [dict(zip(keys, r)) for r in result]
for row in rows:
user = User.query_id(row["id"]).first()
if not user.user_password:
if "is_encrypt" in row and row["is_encrypt"]:
user.password = row["userid"]
else:
user.password = row["passwd"]
DBSession.add(user)
DBSession.flush()
def downgrade():
pass