diff options
author | Christopher Allan Webber <cwebber@dustycloud.org> | 2013-05-11 13:48:42 -0500 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2013-05-11 13:48:42 -0500 |
commit | 058226d0d2d877715b263fd441deb01821f1f59a (patch) | |
tree | c0871be7592fa4e86c6e98a23d1b197560ab56a9 | |
parent | aac428bac2a4967999e1fad40ca9d3a7c6b71199 (diff) | |
parent | 2d8ce464de32611a86532313564e2e5ff1e2c0e5 (diff) | |
download | mediagoblin-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.ini | 1 | ||||
-rw-r--r-- | mediagoblin/media_types/image/models.py | 17 | ||||
-rw-r--r-- | mediagoblin/templates/mediagoblin/user_pages/media.html | 11 |
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 %} |