diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py
index a0eeff61..8fb9940c 100644
--- a/mediagoblin/db/mixin.py
+++ b/mediagoblin/db/mixin.py
@@ -237,6 +237,33 @@ class MediaEntryMixin(GenerateSlugMixin):
label = re.sub('(.)([A-Z][a-z]+)', r'\1 \2', key)
yield label.replace('EXIF', '').replace('Image', ''), exif_all[key]
+ def exif_display_data_short(self):
+ """Display a very short practical version of exif info"""
+ import time, datetime
+ if not self.media_data:
+ return
+ exif_all = self.media_data.get("exif_all")
+ # format date taken
+ takendate = datetime.datetime.strptime(
+ exif_all['Image DateTimeOriginal']['printable'],
+ '%Y:%m:%d %H:%M:%S').date()
+ taken = takendate.strftime('%B %d %Y')
+ fnum = str(exif_all['EXIF FNumber']['printable']).split('/')
+ # calculate aperture
+ if len(fnum) == 2:
+ aperture = "f/%.1f" % (float(fnum[0])/float(fnum[1]))
+ elif fnum[0] != 'None':
+ aperture = "f/%s" % (fnum[0])
+ else:
+ aperture = None
+ 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,
+ }
class MediaCommentMixin(object):
@property
diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css
index 0cb36753..096e2522 100644
--- a/mediagoblin/static/css/base.css
+++ b/mediagoblin/static/css/base.css
@@ -481,6 +481,38 @@ img.media_icon {
vertical-align: sub;
}
+/* EXIF information */
+
+#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;
+}
+
/* navigation */
.navigation {
diff --git a/mediagoblin/templates/mediagoblin/utils/exif.html b/mediagoblin/templates/mediagoblin/utils/exif.html
index a89e69c8..746dccf5 100644
--- a/mediagoblin/templates/mediagoblin/utils/exif.html
+++ b/mediagoblin/templates/mediagoblin/utils/exif.html
@@ -17,18 +17,95 @@
#}
{% block exif_content %}
+
+
+
{% if app_config['exif_visible']
and media.media_data
and media.media_data.exif_all is defined
and media.media_data.exif_all %}
-
EXIF
-
+ Camera Information
+
+
+
+
{% for key, tag in media.exif_display_iter() %}
- {{ key }} |
+ {{ key }} |
{{ tag.printable }} |
{% endfor %}
+
{% endif %}
+
+
{% endblock %}