diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py
index 027215aa..e7f66fa1 100644
--- a/mediagoblin/db/mixin.py
+++ b/mediagoblin/db/mixin.py
@@ -246,7 +246,8 @@ class MediaEntryMixin(GenerateSlugMixin):
exif_all = self.media_data.get("exif_all")
- taken = None
+ exif_short = {}
+
if 'Image DateTimeOriginal' in exif_all:
# format date taken
takendate = datetime.datetime.strptime(
@@ -254,6 +255,8 @@ class MediaEntryMixin(GenerateSlugMixin):
'%Y:%m:%d %H:%M:%S').date()
taken = takendate.strftime('%B %d %Y')
+ exif_short.update({'Date Taken': taken})
+
aperture = None
if 'EXIF FNumber' in exif_all:
fnum = str(exif_all['EXIF FNumber']['printable']).split('/')
@@ -264,14 +267,25 @@ class MediaEntryMixin(GenerateSlugMixin):
elif fnum[0] != 'None':
aperture = "f/%s" % (fnum[0])
- return {
- "Camera" : exif_all['Image Model']['printable'],
- "Exposure" : '%s sec' % exif_all['EXIF ExposureTime']['printable'],
- "Aperture" : aperture,
- "ISO" : exif_all['EXIF ISOSpeedRatings']['printable'],
- "Focal Length" : '%s mm' % exif_all['EXIF FocalLength']['printable'],
- "Date Taken" : taken,
- }
+ if aperture:
+ exif_short.update({'Aperture': aperture})
+
+ short_keys = [
+ ('Camera', 'Image Model', None),
+ ('Exposure', 'EXIF ExposureTime', lambda x: '%s sec' % x),
+ ('ISO Speed', 'EXIF ISOSpeedRatings', None),
+ ('Focal Length', 'EXIF FocalLength', lambda x: '%s mm' % x)]
+
+ for label, key, fmt_func in short_keys:
+ try:
+ val = fmt_func(exif_all[key]['printable']) if fmt_func \
+ else exif_all[key]['printable']
+ exif_short.update({label: val})
+ except KeyError:
+ pass
+
+ return exif_short
+
class MediaCommentMixin(object):
@property
diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css
index 096e2522..4645b2c5 100644
--- a/mediagoblin/static/css/base.css
+++ b/mediagoblin/static/css/base.css
@@ -717,3 +717,29 @@ pre {
width: 46%;
}
}
+
+/* Exif display */
+#exif_content h3 {
+ border-bottom: 1px solid #333;
+}
+#exif_camera_information {
+ margin-bottom: 20px;
+}
+
+#exif_additional_info {
+ display: none;
+}
+#exif_additional_info table {
+ font-size: 11px;
+ margin-top: 10px;
+}
+#exif_additional_info td {
+ vertical-align: top;
+ padding-bottom: 5px;
+}
+#exif_content .col1 {
+ padding-right: 20px;
+}
+#exif_additional_info table tr {
+ margin-bottom: 10px;
+}
diff --git a/mediagoblin/templates/mediagoblin/utils/exif.html b/mediagoblin/templates/mediagoblin/utils/exif.html
index 746dccf5..b62208e1 100644
--- a/mediagoblin/templates/mediagoblin/utils/exif.html
+++ b/mediagoblin/templates/mediagoblin/utils/exif.html
@@ -17,32 +17,6 @@
#}
{% block exif_content %}
-