diff --git a/photoapp/daemon.py b/photoapp/daemon.py index 32715ee..bf96fdd 100644 --- a/photoapp/daemon.py +++ b/photoapp/daemon.py @@ -4,6 +4,7 @@ import logging from photoapp.library import PhotoLibrary from photoapp.types import Photo, PhotoSet, Tag, TagItem from jinja2 import Environment, FileSystemLoader, select_autoescape +from sqlalchemy import desc from sqlalchemy.exc import IntegrityError from sqlalchemy import func import math @@ -64,9 +65,9 @@ class PhotosWeb(object): images = s.query(func.count(PhotoSet.uuid), func.strftime('%Y', PhotoSet.date).label('year'), func.strftime('%m', PhotoSet.date).label('month')). \ - group_by('year', 'month').order_by('year', 'month').all() - - yield self.render("monthly.html", images=images) + group_by('year', 'month').order_by(desc('year'), desc('month')).all() + tsize = s.query(func.sum(Photo.size)).scalar() + yield self.render("monthly.html", images=images, tsize=tsize) @cherrypy.expose def map(self, i=None, zoom=3): diff --git a/photoapp/image.py b/photoapp/image.py index 7827e9a..abe7c24 100644 --- a/photoapp/image.py +++ b/photoapp/image.py @@ -71,8 +71,12 @@ def get_exif_data(path): datestr = exif[key] continue - if datestr is not None: - dateinfo = datetime.strptime(datestr, "%Y:%m:%d %H:%M:%S") + if datestr: + if not datestr.startswith("0000"): # Weed out some known bad cases + try: + dateinfo = datetime.strptime(datestr, "%Y:%m:%d %H:%M:%S") + except ValueError: + dateinfo = datetime.strptime(datestr, "%Y:%m:%d:%H:%M:%S") orien = exif.get("Orientation") if orien: diff --git a/templates/monthly.html b/templates/monthly.html index 49b8a82..680a386 100644 --- a/templates/monthly.html +++ b/templates/monthly.html @@ -3,23 +3,32 @@ {% include "page-top.html" %} - - - - - - - - - - {% for row in images %} +{% set locals = namespace() %} + +{% set locals.total_images = 0 %} + +
+
yearmonthcount
+ - - - + + + - {% endfor %} - -
{{row[1]}}{{row[2]}}{{row[0]}}yearmonthcount
+ + + {% for row in images %} + + {{row[1]}} + {{row[2]}} + {{"{:,}".format(row[0])}}{% set locals.total_images = locals.total_images + row[0]|int %} + + {% endfor %} + + + +

{{ "{:,}".format(locals.total_images) }} Files - {{ tsize | filesizeformat }}

+ + {% include "page-bottom.html" %}