From 5ff575827b5f53a6a5e8126cbcc5a66fde005786 Mon Sep 17 00:00:00 2001 From: Elrond Date: Thu, 1 Mar 2012 21:59:26 +0100 Subject: [PATCH] Video media_data: Change layout in the mongo world Change the media_data for video from entry.media_data["video"] to use entry.media_data directly. Also start a bare MediaEntry.media_data_init(**kwargs) method for setting up the media_data and possibly initialising it with kwargs. --- mediagoblin/db/mongo/migrations.py | 14 ++++++++++++++ mediagoblin/db/mongo/models.py | 3 +++ mediagoblin/media_types/video/processing.py | 6 +++--- .../mediagoblin/media_displays/video.html | 4 ++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/mediagoblin/db/mongo/migrations.py b/mediagoblin/db/mongo/migrations.py index 59035f3b..c5766b0d 100644 --- a/mediagoblin/db/mongo/migrations.py +++ b/mediagoblin/db/mongo/migrations.py @@ -139,3 +139,17 @@ def remove_calculated_html(database): drop_table_field(database, 'users', 'bio_html') drop_table_field(database, 'media_entries', 'description_html') drop_table_field(database, 'media_comments', 'content_html') + +@RegisterMigration(10) +def convert_video_media_data(database): + """ + Move media_data["video"] directly into media_data + """ + collection = database['media_entries'] + target = collection.find( + {'media_data.video': {'$exists': True}}) + + for document in target: + assert len(document['media_data']) == 1 + document['media_data'] = document['media_data']['video'] + collection.save(document) diff --git a/mediagoblin/db/mongo/models.py b/mediagoblin/db/mongo/models.py index 99c7905d..c86adbb6 100644 --- a/mediagoblin/db/mongo/models.py +++ b/mediagoblin/db/mongo/models.py @@ -220,6 +220,9 @@ class MediaEntry(Document, MediaEntryMixin): id = MongoPK() + def media_data_init(self, **kwargs): + self.media_data.update(kwargs) + def get_comments(self, ascending=False): if ascending: order = ASCENDING diff --git a/mediagoblin/media_types/video/processing.py b/mediagoblin/media_types/video/processing.py index 9dc23c55..3a479802 100644 --- a/mediagoblin/media_types/video/processing.py +++ b/mediagoblin/media_types/video/processing.py @@ -77,9 +77,9 @@ def process_video(entry): entry.media_files['webm_640'] = medium_filepath # Save the width and height of the transcoded video - entry.media_data['video'] = { - u'width': transcoder.dst_data.videowidth, - u'height': transcoder.dst_data.videoheight} + entry.media_data_init( + width=transcoder.dst_data.videowidth, + height=transcoder.dst_data.videoheight) # Create a temporary file for the video thumbnail tmp_thumb = tempfile.NamedTemporaryFile() diff --git a/mediagoblin/templates/mediagoblin/media_displays/video.html b/mediagoblin/templates/mediagoblin/media_displays/video.html index ec4338fa..acd570e7 100644 --- a/mediagoblin/templates/mediagoblin/media_displays/video.html +++ b/mediagoblin/templates/mediagoblin/media_displays/video.html @@ -21,8 +21,8 @@ {% block mediagoblin_media %}