diff options
-rw-r--r-- | mediagoblin/db/mongo/migrations.py | 29 | ||||
-rw-r--r-- | mediagoblin/db/sql/convert.py | 7 | ||||
-rw-r--r-- | mediagoblin/media_types/image/processing.py | 12 | ||||
-rw-r--r-- | mediagoblin/templates/mediagoblin/utils/exif.html | 7 |
4 files changed, 39 insertions, 16 deletions
diff --git a/mediagoblin/db/mongo/migrations.py b/mediagoblin/db/mongo/migrations.py index 1d33460e..732f5846 100644 --- a/mediagoblin/db/mongo/migrations.py +++ b/mediagoblin/db/mongo/migrations.py @@ -119,6 +119,7 @@ def media_type_image_to_multimedia_type_image(database): {'$set': {'media_type': 'mediagoblin.media_types.image'}}, multi=True) + @RegisterMigration(8) def mediaentry_add_license(database): """ @@ -140,6 +141,7 @@ def remove_calculated_html(database): drop_table_field(database, 'media_entries', 'description_html') drop_table_field(database, 'media_comments', 'content_html') + @RegisterMigration(10) def convert_video_media_data(database): """ @@ -154,6 +156,7 @@ def convert_video_media_data(database): document['media_data'] = document['media_data']['video'] collection.save(document) + @RegisterMigration(11) def convert_gps_media_data(database): """ @@ -169,3 +172,29 @@ def convert_gps_media_data(database): document['media_data']['gps_' + key] = value del document['media_data']['gps'] collection.save(document) + + +@RegisterMigration(12) +def convert_exif_media_data(database): + """ + Move media_data["exif"]["clean"] to media_data["exif_all"]. + Drop media_data["exif"]["useful"] + In preparation for media_data.exif_all + """ + collection = database['media_entries'] + target = collection.find( + {'media_data.exif.clean': {'$exists': True}}) + + for document in target: + media_data = document['media_data'] + + exif_all = media_data['exif'].pop('clean') + if len(exif_all): + media_data['exif_all'] = exif_all + + del media_data['exif']['useful'] + + assert len(media_data['exif']) == 0 + del media_data['exif'] + + collection.save(document) diff --git a/mediagoblin/db/sql/convert.py b/mediagoblin/db/sql/convert.py index 232e424f..ebf3037c 100644 --- a/mediagoblin/db/sql/convert.py +++ b/mediagoblin/db/sql/convert.py @@ -115,12 +115,9 @@ def convert_image(mk_db): {'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] + media_data_row.media_entry = obj_id_table[media['_id']] session.add(media_data_row) session.commit() @@ -133,7 +130,7 @@ def convert_video(mk_db): 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] + media_data_row.media_entry = obj_id_table[media['_id']] session.add(media_data_row) session.commit() diff --git a/mediagoblin/media_types/image/processing.py b/mediagoblin/media_types/image/processing.py index 6ba91a15..a3bf2c20 100644 --- a/mediagoblin/media_types/image/processing.py +++ b/mediagoblin/media_types/image/processing.py @@ -114,14 +114,10 @@ def process_image(entry): media_files_dict['medium'] = medium_filepath # Insert exif data into database - media_data = entry.setdefault('media_data', {}) - - # TODO: Fix for sql media_data, when exif is in sql - if media_data is not None: - media_data['exif'] = { - 'clean': clean_exif(exif_tags)} - media_data['exif']['useful'] = get_useful( - media_data['exif']['clean']) + exif_all = clean_exif(exif_tags) + + if len(exif_all): + entry.media_data_init(exif_all=exif_all) if len(gps_data): for key in list(gps_data.keys()): diff --git a/mediagoblin/templates/mediagoblin/utils/exif.html b/mediagoblin/templates/mediagoblin/utils/exif.html index 37f274fe..a89e69c8 100644 --- a/mediagoblin/templates/mediagoblin/utils/exif.html +++ b/mediagoblin/templates/mediagoblin/utils/exif.html @@ -18,11 +18,12 @@ {% block exif_content %} {% if app_config['exif_visible'] - and media.media_data.exif is defined - and media.media_data.exif.has_key('useful') %} + and media.media_data + and media.media_data.exif_all is defined + and media.media_data.exif_all %} <h3>EXIF</h3> <table> - {% for key, tag in media.media_data.exif.useful.items() %} + {% for key, tag in media.exif_display_iter() %} <tr> <td>{{ key }}</td> <td>{{ tag.printable }}</td> |