summaryrefslogtreecommitdiffstats
path: root/_controllers/blog/permapage.py
diff options
context:
space:
mode:
authorguyzmo <guyzmo@leloop.org>2011-01-14 11:51:54 +0100
committerguyzmo <guyzmo@leloop.org>2011-01-14 11:51:54 +0100
commit48c34a6f62e12f7cb2a7a710dc99cb8d53957cfe (patch)
treef2fd775016309f35ea57a1ee071a9d7231a193f3 /_controllers/blog/permapage.py
init
Diffstat (limited to '_controllers/blog/permapage.py')
-rw-r--r--_controllers/blog/permapage.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/_controllers/blog/permapage.py b/_controllers/blog/permapage.py
new file mode 100644
index 0000000..37d0f4f
--- /dev/null
+++ b/_controllers/blog/permapage.py
@@ -0,0 +1,38 @@
+import urlparse
+from blogofile.cache import bf
+import re
+
+blog = bf.config.controllers.blog
+
+
+def run():
+ write_permapages()
+
+
+def write_permapages():
+ "Write blog posts to their permalink locations"
+ site_re = re.compile(bf.config.site.url, re.IGNORECASE)
+ num_posts = len(blog.posts)
+
+ for i, post in enumerate(blog.posts):
+ if post.permalink:
+ path = site_re.sub("", post.permalink)
+ blog.logger.info("Writing permapage for post: {0}".format(path))
+ else:
+ #Permalinks MUST be specified. No permalink, no page.
+ blog.logger.info("Post has no permalink: {0}".format(post.title))
+ continue
+
+ env = {
+ "post": post,
+ "posts": blog.posts
+ }
+
+ #Find the next and previous posts chronologically
+ if i < num_posts - 1:
+ env['prev_post'] = blog.posts[i + 1]
+ if i > 0:
+ env['next_post'] = blog.posts[i - 1]
+
+ bf.writer.materialize_template(
+ "permapage.mako", bf.util.path_join(path, "index.html"), env)