From 63fafa802dcb0454db3b3f2387d3a8292ac0ce97 Mon Sep 17 00:00:00 2001 From: Dan Crosta Date: Wed, 6 May 2015 23:04:28 -0400 Subject: [PATCH] support pages for categories and tags, too --- autopages.py | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/autopages.py b/autopages.py index 8b311a7..a6539b1 100644 --- a/autopages.py +++ b/autopages.py @@ -1,9 +1,12 @@ +import logging import os import os.path from pelican import signals +logger = logging.getLogger("autopages") + def yield_files(root): root = os.path.realpath(os.path.abspath(root)) for dirpath, dirnames, filenames in os.walk(root): @@ -19,21 +22,41 @@ def yield_files(root): continue yield os.path.join(dirpath, filename) -def test(article_generator): +def make_page(readers, filename): + base_path, filename = os.path.split(filename) + page = readers.read_file(base_path, filename) + slug, _ = os.path.splitext(filename) + return slug, page + +def make_pages(readers, path): + pages = {} + for filename in yield_files(path): + try: + slug, page = make_page(readers, filename) + except Exception: + logger.exception("Could not make autopage for %r", filename) + continue + pages[slug] = page + return pages + +def create_autopages(article_generator): settings = article_generator.settings readers = article_generator.readers - path = settings.get("AUTHOR_PAGE_PATH", "authors") - author_pages = {} - for filename in yield_files(path): - base_path, filename = os.path.split(filename) - page = readers.read_file(base_path, filename) - slug, _ = os.path.splitext(filename) - author_pages[slug] = page + authors_path = settings.get("AUTHOR_PAGE_PATH", "authors") + categories_path = settings.get("CATEGORY_PAGE_PATH", "categories") + tags_path = settings.get("TAG_PAGE_PATH", "tags") + + author_pages = make_pages(readers, authors_path) + category_pages = make_pages(readers, categories_path) + tag_pages = make_pages(readers, tags_path) for author, _ in article_generator.authors: - print "set author.page for %s to %r" % (author.slug, author_pages.get(author.slug, "")) author.page = author_pages.get(author.slug, "") + for category, _ in article_generator.categories: + category.page = category_pages.get(category.slug, "") + for tag in article_generator.tags: + tag.page = tag_pages.get(tag.slug, "") def register(): - signals.article_generator_finalized.connect(test) + signals.article_generator_finalized.connect(create_autopages)