root / snf-pithos-backend / pithos / backends / lib / sqlalchemy / alembic / versions / 27381099d477_alter_public_add_col.py @ 72e191e5
History | View | Annotate | Download (1.1 kB)
1 |
"""alter public add column url
|
---|---|
2 |
|
3 |
Revision ID: 27381099d477
|
4 |
Revises: 2a309a9a3438
|
5 |
Create Date: 2013-03-20 16:14:20.058077
|
6 |
|
7 |
"""
|
8 |
|
9 |
# revision identifiers, used by Alembic.
|
10 |
revision = '27381099d477'
|
11 |
down_revision = '2a309a9a3438'
|
12 |
|
13 |
from alembic import op |
14 |
import sqlalchemy as sa |
15 |
|
16 |
from pithos.backends.modular import ULTIMATE_ANSWER |
17 |
|
18 |
|
19 |
def upgrade(): |
20 |
op.add_column('public', sa.Column('url', sa.String(2048))) |
21 |
op.create_unique_constraint('idx_public_url', 'public', ['url']) |
22 |
|
23 |
# migrate old rows
|
24 |
p = sa.sql.table( |
25 |
'public',
|
26 |
sa.sql.column('public_id', sa.Integer),
|
27 |
sa.sql.column('url', sa.String),
|
28 |
) |
29 |
|
30 |
try:
|
31 |
from pithos.api.short_url import encode_url |
32 |
except ImportError: |
33 |
return
|
34 |
else:
|
35 |
get_url = lambda x: encode_url(x + ULTIMATE_ANSWER)
|
36 |
conn = op.get_bind() |
37 |
s = sa.select([p.c.public_id]) |
38 |
rows = conn.execute(s).fetchall() |
39 |
for r in rows: |
40 |
s = p.update().values(url=get_url(r[0])).where(
|
41 |
p.c.public_id == r[0])
|
42 |
op.execute(s) |
43 |
|
44 |
|
45 |
def downgrade(): |
46 |
op.drop_constraint('idx_public_url', 'public') |
47 |
op.drop_column('public', 'url') |