Merge branch 'elrond-sql-convert_video_data'
[mediagoblin.git] / mediagoblin / db / sql / convert.py
index a098927ff73b1d135a6d1c8dca7883c356d4d415..086a5c9cb0481d101a21560e74ce4565241d87c4 100644 (file)
@@ -19,7 +19,8 @@ from mediagoblin.init import setup_global_and_app_config, setup_database
 from mediagoblin.db.mongo.util import ObjectId
 
 from mediagoblin.db.sql.models import (Base, User, MediaEntry, MediaComment,
-    Tag, MediaTag, MediaFile)
+    Tag, MediaTag, MediaFile, MediaAttachmentFile)
+from mediagoblin.media_types.video.models import VideoData
 from mediagoblin.db.sql.open import setup_connection_and_db_from_config as \
     sql_connect
 from mediagoblin.db.mongo.open import setup_connection_and_db_from_config as \
@@ -49,7 +50,7 @@ def copy_reference_attr(entry, new_entry, ref_attr):
 def convert_users(mk_db):
     session = Session()
 
-    for entry in mk_db.User.find():
+    for entry in mk_db.User.find().sort('created'):
         print entry.username
 
         new_entry = User()
@@ -71,15 +72,15 @@ def convert_users(mk_db):
 def convert_media_entries(mk_db):
     session = Session()
 
-    for entry in mk_db.MediaEntry.find():
+    for entry in mk_db.MediaEntry.find().sort('created'):
         print repr(entry.title)
 
         new_entry = MediaEntry()
         copy_attrs(entry, new_entry,
             ('title', 'slug', 'created',
-             'description', 'description_html',
+             'description',
              'media_type', 'state', 'license',
-             'fail_error',
+             'fail_error', 'fail_metadata',
              'queued_task_id',))
         copy_reference_attr(entry, new_entry, "uploader")
 
@@ -92,6 +93,28 @@ def convert_media_entries(mk_db):
             new_file.media_entry = new_entry.id
             Session.add(new_file)
 
+        for attachment in entry.attachment_files:
+            new_attach = MediaAttachmentFile(
+                name=attachment["name"],
+                filepath=attachment["filepath"],
+                created=attachment["created"]
+                )
+            new_attach.media_entry = new_entry.id
+            Session.add(new_attach)
+
+    session.commit()
+    session.close()
+
+
+def convert_video(mk_db):
+    session = Session()
+
+    for media in mk_db.MediaEntry.find(
+            {'media_type': 'mediagoblin.media_types.video'}).sort('created'):
+        media_data_row = VideoData(**media.media_data)
+        media_data_row.media_entry = obj_id_table[media._id]
+        session.add(media_data_row)
+
     session.commit()
     session.close()
 
@@ -100,7 +123,7 @@ def convert_media_tags(mk_db):
     session = Session()
     session.autoflush = False
 
-    for media in mk_db.MediaEntry.find():
+    for media in mk_db.MediaEntry.find().sort('created'):
         print repr(media.title)
 
         for otag in media.tags:
@@ -127,13 +150,13 @@ def convert_media_tags(mk_db):
 def convert_media_comments(mk_db):
     session = Session()
 
-    for entry in mk_db.MediaComment.find():
+    for entry in mk_db.MediaComment.find().sort('created'):
         print repr(entry.content)
 
         new_entry = MediaComment()
         copy_attrs(entry, new_entry,
             ('created',
-             'content', 'content_html',))
+             'content',))
         copy_reference_attr(entry, new_entry, "media_entry")
         copy_reference_attr(entry, new_entry, "author")
 
@@ -145,11 +168,10 @@ def convert_media_comments(mk_db):
     session.close()
 
 
-def main():
-    global_config, app_config = setup_global_and_app_config("mediagoblin.ini")
-
-    sql_conn, sql_db = sql_connect({'sql_engine': 'sqlite:///mediagoblin.db'})
+def run_conversion(config_name):
+    global_config, app_config = setup_global_and_app_config(config_name)
 
+    sql_conn, sql_db = sql_connect(app_config)
     mk_conn, mk_db = mongo_connect(app_config)
 
     Base.metadata.create_all(sql_db.engine)
@@ -158,6 +180,8 @@ def main():
     Session.remove()
     convert_media_entries(mk_db)
     Session.remove()
+    convert_video(mk_db)
+    Session.remove()
     convert_media_tags(mk_db)
     Session.remove()
     convert_media_comments(mk_db)
@@ -165,4 +189,4 @@ def main():
 
 
 if __name__ == '__main__':
-    main()
+    run_conversion("mediagoblin.ini")