autopages.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import os
  2. import os.path
  3. from pelican import signals
  4. def yield_files(root):
  5. root = os.path.realpath(os.path.abspath(root))
  6. for dirpath, dirnames, filenames in os.walk(root):
  7. for dirname in list(dirnames):
  8. try:
  9. if dirname.startswith("."):
  10. dirnames.remove(dirname)
  11. except IndexError:
  12. # duplicate already removed?
  13. pass
  14. for filename in filenames:
  15. if filename.startswith("."):
  16. continue
  17. yield os.path.join(dirpath, filename)
  18. def test(article_generator):
  19. settings = article_generator.settings
  20. readers = article_generator.readers
  21. path = settings.get("AUTHOR_PAGE_PATH", "authors")
  22. author_pages = {}
  23. for filename in yield_files(path):
  24. base_path, filename = os.path.split(filename)
  25. page = readers.read_file(base_path, filename)
  26. slug, _ = os.path.splitext(filename)
  27. author_pages[slug] = page
  28. for author, _ in article_generator.authors:
  29. print "set author.page for %s to %r" % (author.slug, author_pages.get(author.slug, ""))
  30. author.page = author_pages.get(author.slug, "")
  31. def register():
  32. signals.article_generator_finalized.connect(test)