From 24d310e46fc237eccfc7859ae273ddaaf04e2fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tryggvi=20Bj=C3=B6rgvinsson?= Date: Thu, 8 Nov 2012 00:14:17 +0000 Subject: A template fix to show the EXIF DateTimeOriginal (as creation date). Added as a configurable option 'original_date_visible' (default false). Since the EXIF tag is a string with the date formatted as 'YYYY:MM:DD HH:MM:SS' the fix slices the string to give only the date and then replaces : by - to conform with the 'Added on' date. --- mediagoblin/config_spec.ini | 1 + mediagoblin/templates/mediagoblin/user_pages/media.html | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini index 17df2819..7b56f768 100644 --- a/mediagoblin/config_spec.ini +++ b/mediagoblin/config_spec.ini @@ -58,6 +58,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) geolocation_map_visible = boolean(default=False) # Theming stuff diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html index ac15dd2f..5932174d 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/media.html +++ b/mediagoblin/templates/mediagoblin/user_pages/media.html @@ -153,6 +153,14 @@

Added on

{{ date }}

{%- endtrans %} + {% if app_config['original_date_visible'] + and media.media_data.exif_all is defined + and 'EXIF DateTimeOriginal' in media.media_data.exif_all %} + {% trans date=media.media_data.exif_all['EXIF DateTimeOriginal']['printable'][:10].replace(':','-') -%} +

Created on

+

{{ date }}

+ {%- endtrans %} + {% endif %} {% if media.tags %} {% include "mediagoblin/utils/tags.html" %} {% endif %} -- cgit v1.2.3 From d682d066d375177461db82986dc79028925a8819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tryggvi=20Bj=C3=B6rgvinsson?= Date: Sun, 25 Nov 2012 16:09:35 +0000 Subject: Moved exif date transformation logic from template to image data model (as a function) --- mediagoblin/media_types/image/models.py | 12 ++++++++++++ mediagoblin/templates/mediagoblin/user_pages/media.html | 15 ++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py index fc518daa..b02c41d3 100644 --- a/mediagoblin/media_types/image/models.py +++ b/mediagoblin/media_types/image/models.py @@ -40,6 +40,18 @@ class ImageData(Base): gps_altitude = Column(Float) gps_direction = Column(Float) + def get_original_date(self): + 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 5932174d..2dcbf90c 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/media.html +++ b/mediagoblin/templates/mediagoblin/user_pages/media.html @@ -153,13 +153,14 @@

Added on

{{ date }}

{%- endtrans %} - {% if app_config['original_date_visible'] - and media.media_data.exif_all is defined - and 'EXIF DateTimeOriginal' in media.media_data.exif_all %} - {% trans date=media.media_data.exif_all['EXIF DateTimeOriginal']['printable'][:10].replace(':','-') -%} -

Created on

-

{{ date }}

- {%- endtrans %} + {% 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") -%} +

Created on

+

{{ date }}

+ {%- endtrans %} + {%- endif %} {% endif %} {% if media.tags %} {% include "mediagoblin/utils/tags.html" %} -- cgit v1.2.3 From 2d8ce464de32611a86532313564e2e5ff1e2c0e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tryggvi=20Bj=C3=B6rgvinsson?= Date: Sun, 25 Nov 2012 16:38:44 +0000 Subject: Documented the get_original_date method --- mediagoblin/media_types/image/models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py index b02c41d3..64be20c0 100644 --- a/mediagoblin/media_types/image/models.py +++ b/mediagoblin/media_types/image/models.py @@ -41,6 +41,11 @@ class ImageData(Base): 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, -- cgit v1.2.3