Convert (gps) image media_data.
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Wed, 14 Mar 2012 20:17:07 +0000 (21:17 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Wed, 14 Mar 2012 20:17:07 +0000 (21:17 +0100)
Add mongo_to_sql convert part for converting the media_data
for images. This currently drops the exif data and thus
only converts gps data.

mediagoblin/db/sql/convert.py

index 086a5c9cb0481d101a21560e74ce4565241d87c4..dca93f3f1c048fcc4c69a62b19b5e709322c1b8b 100644 (file)
 # 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/>.
 
+from copy import copy
 
 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, MediaAttachmentFile)
+from mediagoblin.media_types.image.models import ImageData
 from mediagoblin.media_types.video.models import VideoData
 from mediagoblin.db.sql.open import setup_connection_and_db_from_config as \
     sql_connect
@@ -106,6 +108,25 @@ def convert_media_entries(mk_db):
     session.close()
 
 
+def convert_image(mk_db):
+    session = Session()
+
+    for media in mk_db.MediaEntry.find(
+            {'media_type': 'mediagoblin.media_types.image'}).sort('created'):
+        media_data = copy(media.media_data)
+
+        # TODO: Fix after exif is migrated
+        media_data.pop('exif', None)
+
+        if len(media_data):
+            media_data_row = ImageData(**media_data)
+            media_data_row.media_entry = obj_id_table[media._id]
+            session.add(media_data_row)
+
+    session.commit()
+    session.close()
+
+
 def convert_video(mk_db):
     session = Session()
 
@@ -180,6 +201,8 @@ def run_conversion(config_name):
     Session.remove()
     convert_media_entries(mk_db)
     Session.remove()
+    convert_image(mk_db)
+    Session.remove()
     convert_video(mk_db)
     Session.remove()
     convert_media_tags(mk_db)