Module bd0a15c7b6f_dont_require_fed_openid
[hide private]
[frames] | no frames]

Source Code for Module bd0a15c7b6f_dont_require_fed_openid

 1  """Do not require Fedora's OpenID in DB schema 
 2   
 3  Revision ID: bd0a15c7b6f 
 4  Revises: 5055336e8c44 
 5  Create Date: 2014-08-20 21:49:05.299819 
 6   
 7  """ 
 8   
 9  # revision identifiers, used by Alembic. 
10  revision = 'bd0a15c7b6f' 
11  down_revision = '5055336e8c44' 
12   
13  from alembic import op 
14  import sqlalchemy as sa 
15  import logging 
16   
17  logger = logging.getLogger('alembic') 
18   
19  metadata = sa.MetaData() 
20   
21 -def username_default(oid_user):
22 return oid_user.replace(".id.fedoraproject.org/", "") \ 23 .replace("http://", "")
24
25 -def upgrade():
26 op.add_column(u'user', sa.Column('username', sa.String(length=100))) 27 28 sa_user = sa.Table("user", metadata, 29 sa.Column("id", sa.Integer), 30 sa.Column("openid_name", sa.String(length=100)), 31 sa.Column("username", sa.String(length=100)) 32 ) 33 34 for u in op.get_bind().execute(sa.select([sa_user.c.id, sa_user.c.openid_name])): 35 username = username_default(u[1]) 36 logger.info("converting {0}'s account".format(username)) 37 op.get_bind().execute(sa_user.update() \ 38 .where(sa_user.c.id==u[0]) \ 39 .values(username=username)) 40 41 if op.get_bind().dialect.name != 'sqlite': 42 # Pretty sad we can not set this non-nullable in SQLite 43 op.alter_column("user", "username", nullable=False) 44 # We can live with redundant openid_name column.. 45 op.drop_column(u'user', u'openid_name')
46 47
48 -def downgrade():
49 op.add_column(u'user', sa.Column(u'openid_name', sa.VARCHAR(length=100), nullable=True)) 50 51 sa_user = sa.Table("user", metadata, 52 sa.Column("id", sa.Integer), 53 sa.Column("openid_name", sa.String(length=100)), 54 sa.Column("username", sa.String(length=100)) 55 ) 56 57 for u in op.get_bind().execute(sa.select([sa_user.c.id, sa_user.c.username])): 58 openid_name = "http://{0}.id.fedoraproject.org/".format(str(u[1])) 59 op.get_bind().execute(sa_user.update() \ 60 .where(sa_user.c.id==u[0]) \ 61 .values(openid_name=openid_name) 62 ) 63 64 if op.get_bind().dialect.name != 'sqlite': 65 op.drop_column(u'user', 'username') 66 op.alter_column("user", "openid_name", nullable=False)
67