aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/media_types/image/__init__.py23
-rw-r--r--mediagoblin/media_types/image/models.py17
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html2
3 files changed, 24 insertions, 18 deletions
diff --git a/mediagoblin/media_types/image/__init__.py b/mediagoblin/media_types/image/__init__.py
index 15cc8dda..5130ef48 100644
--- a/mediagoblin/media_types/image/__init__.py
+++ b/mediagoblin/media_types/image/__init__.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import datetime
+
from mediagoblin.media_types import MediaManagerBase
from mediagoblin.media_types.image.processing import process_image, \
sniff_handler
@@ -28,5 +30,26 @@ class ImageMediaManager(MediaManagerBase):
accepted_extensions = ["jpg", "jpeg", "png", "gif", "tiff"]
media_fetch_order = [u'medium', u'original', u'thumb']
+ 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)
+ """
+ if not self.entry.media_data or not self.entry.media_data.exif_all:
+ return None
+
+ 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.entry.media_data.exif_all[
+ 'EXIF DateTimeOriginal']['printable']
+ original_date = datetime.datetime.strptime(
+ exif_date,
+ '%Y:%m:%d %H:%M:%S')
+ return original_date
+ except (KeyError, ValueError):
+ return None
+
MEDIA_MANAGER = ImageMediaManager
diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py
index 4317732d..b2ea3960 100644
--- a/mediagoblin/media_types/image/models.py
+++ b/mediagoblin/media_types/image/models.py
@@ -44,23 +44,6 @@ 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 22bdf7d7..667510d5 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -155,7 +155,7 @@
</span></p>
{% if app_config['original_date_visible'] %}
- {% set original_date = media.media_data.get_original_date() %}
+ {% set original_date = media.media_manager.get_original_date() %}
{% if original_date %}
<h3>{% trans %}Created{% endtrans %}</h3>