Moved exif date transformation logic from template to image data model (as a function)
authorTryggvi Björgvinsson <tryggvib@fsfi.is>
Sun, 25 Nov 2012 16:09:35 +0000 (16:09 +0000)
committerTryggvi Björgvinsson <tryggvib@fsfi.is>
Sun, 25 Nov 2012 16:09:35 +0000 (16:09 +0000)
mediagoblin/media_types/image/models.py
mediagoblin/templates/mediagoblin/user_pages/media.html

index fc518daa752387767fdc03e792ceb80e3a38b978..b02c41d3a2d025a6cc81ae6ce9de8affe9e9b266 100644 (file)
@@ -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]
index 5932174daa22d84d6d8224777688db7f9c42e8ac..2dcbf90cf19d84a08debe1889ee2cc67ea0a98f2 100644 (file)
       <h3>Added on</h3>
       <p>{{ date }}</p>
     {%- 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(':','-') -%}
-        <h3>Created on</h3>
-        <p>{{ date }}</p>
-      {%- 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") -%}
+          <h3>Created on</h3>
+          <p>{{ date }}</p>
+        {%- endtrans %}
+      {%- endif %}
     {% endif %}
     {% if media.tags %}
       {% include "mediagoblin/utils/tags.html" %}