aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2013-05-11 13:48:42 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2013-05-11 13:48:42 -0500
commit058226d0d2d877715b263fd441deb01821f1f59a (patch)
treec0871be7592fa4e86c6e98a23d1b197560ab56a9
parentaac428bac2a4967999e1fad40ca9d3a7c6b71199 (diff)
parent2d8ce464de32611a86532313564e2e5ff1e2c0e5 (diff)
downloadmediagoblin-058226d0d2d877715b263fd441deb01821f1f59a.tar.lz
mediagoblin-058226d0d2d877715b263fd441deb01821f1f59a.tar.xz
mediagoblin-058226d0d2d877715b263fd441deb01821f1f59a.zip
Merge remote-tracking branch 'refs/remotes/tryggvib/532-exif-creation-date'
Conflicts: mediagoblin/config_spec.ini mediagoblin/templates/mediagoblin/user_pages/media.html
-rw-r--r--mediagoblin/config_spec.ini1
-rw-r--r--mediagoblin/media_types/image/models.py17
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html11
3 files changed, 29 insertions, 0 deletions
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index 6c00aa58..2af4adb2 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -61,6 +61,7 @@ csrf_cookie_name = string(default='mediagoblin_csrftoken')
push_urls = string_list(default=list())
exif_visible = boolean(default=False)
+original_date_visible = boolean(default=False)
# Theming stuff
theme_install_dir = string(default="%(here)s/user_dev/themes/")
diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py
index b2ea3960..4317732d 100644
--- a/mediagoblin/media_types/image/models.py
+++ b/mediagoblin/media_types/image/models.py
@@ -44,6 +44,23 @@ class ImageData(Base):
gps_altitude = Column(Float)
gps_direction = Column(Float)
+ def get_original_date(self):
+ """
+ Get the original date and time from the EXIF information. Returns
+ either a datetime object or None (if anything goes wrong)
+ """
+
+ import datetime
+ try:
+ # Try wrapped around all since exif_all might be none,
+ # EXIF DateTimeOriginal or printable might not exist, or
+ # strptime might not be able to parse date correctly
+ exif_date = self.exif_all['EXIF DateTimeOriginal']['printable']
+ original_date = datetime.datetime.strptime(exif_date,
+ '%Y:%m:%d %H:%M:%S')
+ return original_date
+ except:
+ return None
DATA_MODEL = ImageData
MODELS = [ImageData]
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
index 6d32d009..8a65e4e9 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -153,6 +153,17 @@
{{ formatted_time }} ago
{%- endtrans -%}
</span></p>
+
+ {% if app_config['original_date_visible'] %}
+ {% set original_date = media.media_data.get_original_date() %}
+ {% if original_date -%}
+ {% trans date=original_date.strftime("%Y-%m-%d") -%}
+ <h3>Created on</h3>
+ <p>{{ date }}</p>
+ {%- endtrans %}
+ {%- endif %}
+ {% endif %}
+
{% if media.tags %}
{% include "mediagoblin/utils/tags.html" %}
{% endif %}