aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/db/mongo/migrations.py29
-rw-r--r--mediagoblin/db/sql/convert.py7
-rw-r--r--mediagoblin/media_types/image/processing.py12
-rw-r--r--mediagoblin/templates/mediagoblin/utils/exif.html7
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>