tags.py (1119B) - raw
1
2 # vim:fileencoding=utf-8
3
4 import os
5 import genshi.template
6 import lxml.etree
7
8 import constance
9 import viewutils
10
11 template_loader = genshi.template.TemplateLoader(
12 os.path.join(os.path.realpath(os.path.dirname(__file__)), 'templates', 'tags'),
13 variable_lookup='strict')
14
15 def generate(dir, xslt, blog_entries, config):
16 tag_freqs = {}
17 for entry in blog_entries:
18 for tag in entry.tags:
19 tag_freqs[tag] = tag_freqs.get(tag, 0) + 1
20
21 for tag in tag_freqs.keys():
22 tagged_entries = [e for e in blog_entries if tag in e.tags]
23 rendered = template_loader.load('tag.html').generate(tag=tag, items=tagged_entries).render('xhtml', encoding='utf8')
24 transformed = str(xslt(lxml.etree.fromstring(rendered)))
25 constance.output(os.path.join(dir, tag.encode('utf8') + '.html'), transformed)
26
27 rendered = template_loader.load('index.html').generate(tag_freqs=tag_freqs,
28 config=config).render('xhtml', encoding='utf8')
29 transformed = str(xslt(lxml.etree.fromstring(rendered)))
30 constance.output(os.path.join(dir, 'index.html'), transformed)