Added support for http callbacks on processing
[mediagoblin.git] / mediagoblin / db / sql / migrations.py
index 98d0d0aaf22c4aaa35dc30626e66bd02f1d21f24..416c076b2ac7a45c58634765b9c640ba8a038120 100644 (file)
@@ -1,5 +1,5 @@
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 MediaGoblin contributors.  See AUTHORS.
+# 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
 # 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, \
+        ProcessingMetaData
+
 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()
+
+
+@RegisterMigration(6, MIGRATIONS)
+def create_processing_metadata_table(db):
+    ProcessingMetaData.__table__.create(db.bind)
+    db.commit()