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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import datetime
from sqlalchemy import (MetaData, Table, Column, Boolean, SmallInteger,
Integer, Unicode, UnicodeText, DateTime, ForeignKey)
from mediagoblin.db.sql.util import RegisterMigration
from mediagoblin.db.sql.models import MediaEntry, Collection, User
MIGRATIONS = {}
@RegisterMigration(1, MIGRATIONS)
def ogg_to_webm_audio(db_conn):
metadata = MetaData(bind=db_conn.bind)
file_keynames = Table('core__file_keynames', metadata, autoload=True,
autoload_with=db_conn.bind)
db_conn.execute(
file_keynames.update().where(file_keynames.c.name == 'ogg').
values(name='webm_audio')
)
db_conn.commit()
@RegisterMigration(2, MIGRATIONS)
def add_wants_notification_column(db_conn):
metadata = MetaData(bind=db_conn.bind)
users = Table('core__users', metadata, autoload=True,
autoload_with=db_conn.bind)
col = Column('wants_comment_notification', Boolean,
default=True, nullable=True)
col.create(users, populate_defaults=True)
db_conn.commit()
@RegisterMigration(3, MIGRATIONS)
def add_transcoding_progress(db_conn):
metadata = MetaData(bind=db_conn.bind)
media_entry = Table('core__media_entries', metadata, autoload=True,
autoload_with=db_conn.bind)
col = Column('transcoding_progress', SmallInteger)
col.create(media_entry)
db_conn.commit()
@RegisterMigration(4, MIGRATIONS)
def add_collection_tables(db_conn):
metadata = MetaData(bind=db_conn.bind)
collection = Table('core__collections', metadata,
Column('id', Integer, primary_key=True),
Column('title', Unicode, nullable=False),
Column('slug', Unicode),
Column('created', DateTime, nullable=False, default=datetime.datetime.now, index=True),
Column('description', UnicodeText),
Column('creator', Integer, ForeignKey(User.id), nullable=False),
Column('items', Integer, default=0))
collection_item = Table('core__collection_items', metadata,
Column('id', Integer, primary_key=True),
Column('media_entry', Integer, ForeignKey(MediaEntry.id), nullable=False, index=True),
Column('collection', Integer, ForeignKey(Collection.id), nullable=False),
Column('note', UnicodeText, nullable=True),
Column('added', DateTime, nullable=False, default=datetime.datetime.now),
Column('position', Integer))
collection.create()
collection_item.create()
db_conn.commit()
@RegisterMigration(5, MIGRATIONS)
def add_mediaentry_collected(db_conn):
metadata = MetaData(bind=db_conn.bind)
media_entry = Table('core__media_entries', metadata, autoload=True,
autoload_with=db_conn.bind)
col = Column('collected', Integer, default=0)
col.create(media_entry)
db_conn.commit()
|