summaryrefslogtreecommitdiffstats
path: root/_controllers/blog/permapage.py
blob: 700af880303451476de6e800b76dcc0f853fb3fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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,
            "next_post": None,
            "prev_post": None
        }

        #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)