summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico von Geyso <Nico.Geyso@FU-Berlin.de>2012-07-30 20:58:11 +0200
committerNico von Geyso <Nico.Geyso@FU-Berlin.de>2012-07-30 20:58:11 +0200
commit847e9272ea2345e434054815e7d7ad3c3d4e104d (patch)
treee975fe66efc806a243a9262d687bc4724c7ffe2a
parent85e937ad4dc3bdd4ef23b6c6f0de8d45bb692725 (diff)
downloadwww-847e9272ea2345e434054815e7d7ad3c3d4e104d.tar.gz
www-847e9272ea2345e434054815e7d7ad3c3d4e104d.tar.bz2
www-847e9272ea2345e434054815e7d7ad3c3d4e104d.zip
group blog posts by year
-rw-r--r--blog.html15
-rw-r--r--utils/filters.py14
2 files changed, 22 insertions, 7 deletions
diff --git a/blog.html b/blog.html
index 3fdec48..579fd5a 100644
--- a/blog.html
+++ b/blog.html
@@ -6,11 +6,14 @@
{% block content %}
<h2>Latest posts</h2>
-{% for post in site.posts %}
-<p>
- <a href="{{ post.get_url() }}">{{ post.title }}</a>
- -
- {{ post.date.strftime('%Y, %B %d') }}
-</p>
+{% for year,entries in site.posts|group_by_year|dictsort|reverse %}
+ <h3>{{ year }}</h3>
+ {% for post in entries %}
+ <p>
+ {{ post.date.strftime('%B %d') }}
+ -
+ <a href="{{ post.get_url() }}">{{ post.title }}</a>
+ </p>
+ {% endfor %}</ul></li>
{% endfor %}
{% endblock %}
diff --git a/utils/filters.py b/utils/filters.py
index 2469419..22c9f7d 100644
--- a/utils/filters.py
+++ b/utils/filters.py
@@ -1,8 +1,20 @@
+def group_by_year(objs):
+ entries = {}
+ for obj in objs:
+ year = obj.date.strftime('%Y')
+
+ try:
+ entries[year].append(obj)
+ except:
+ entries[year] = [obj]
+
+ return entries
+
def filter_by_attr(objs, attr):
return filter(lambda x: hasattr(x,attr), objs)
def filter_by_path(objs, value):
return filter(lambda page: page.path.startswith(value), objs)
-filters = [filter_by_attr, filter_by_path]
+filters = [filter_by_attr, filter_by_path, group_by_year]