Add inspect_table.
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Thu, 13 Dec 2012 11:35:27 +0000 (12:35 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Tue, 8 Jan 2013 21:50:01 +0000 (22:50 +0100)
In our current scheme of migrations, we reflect the current
sql schema into an SQLAlchemy schema. So let's have a tool
function for this.

mediagoblin/db/migrations.py
mediagoblin/db/sql/migration_tools.py

index 9527019856dd0a2804cfafd82b802b8c4c48481e..469d28749d522dc0d8bb2ddb3907b7db17c11f3c 100644 (file)
@@ -23,7 +23,7 @@ from sqlalchemy.exc import ProgrammingError
 from sqlalchemy.ext.declarative import declarative_base
 from migrate.changeset.constraint import UniqueConstraint
 
-from mediagoblin.db.sql.migration_tools import RegisterMigration
+from mediagoblin.db.sql.migration_tools import RegisterMigration, inspect_table
 from mediagoblin.db.models import MediaEntry, Collection, User
 
 MIGRATIONS = {}
@@ -60,8 +60,7 @@ def add_wants_notification_column(db_conn):
 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)
+    media_entry = inspect_table(metadata, 'core__media_entries')
 
     col = Column('transcoding_progress', SmallInteger)
     col.create(media_entry)
@@ -115,8 +114,7 @@ def add_collection_tables(db_conn):
 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)
+    media_entry = inspect_table(metadata, 'core__media_entries')
 
     col = Column('collected', Integer, default=0)
     col.create(media_entry)
@@ -172,8 +170,7 @@ def fix_CollectionItem_v0_constraint(db_conn):
 
     metadata = MetaData(bind=db_conn.bind)
 
-    CollectionItem_table = Table('core__collection_items',
-        metadata, autoload=True, autoload_with=db_conn.bind)
+    CollectionItem_table = inspect_table(metadata, 'core__collection_items')
 
     constraint = UniqueConstraint('collection', 'media_entry',
         name='core__collection_items_collection_media_entry_key',
index ee84e06fd9bcc1e1fec9b0f070e75872b8853419..e5380a3b9c3795731c9a8b3f0c4151ae8bab8841 100644 (file)
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from mediagoblin.tools.common import simple_printer
+from sqlalchemy import Table
 
 
 class MigrationManager(object):
@@ -261,3 +262,9 @@ def assure_migrations_table_setup(db):
     if not MigrationData.__table__.exists(db.bind):
         MigrationData.metadata.create_all(
             db.bind, tables=[MigrationData.__table__])
+
+
+def inspect_table(metadata, table_name):
+    """Simple helper to get a ref to an already existing table"""
+    return Table(table_name, metadata, autoload=True,
+                 autoload_with=metadata.bind)