summaryrefslogtreecommitdiffstats
path: root/nikola/plugins/task/authors.py
diff options
context:
space:
mode:
authorLibravatarDererk <dererk@satellogic.com>2016-11-15 14:18:46 -0300
committerLibravatarDererk <dererk@satellogic.com>2016-11-15 14:18:46 -0300
commitffb671c61a24a9086343b54bad080e145ff33fc5 (patch)
tree2c5291f7a34edf4afdc8e07887a148291bfa3fa1 /nikola/plugins/task/authors.py
parent4e3224c012df9f74f010eb92203520515e8537b9 (diff)
New upstream version 7.8.1upstream/7.8.1
Diffstat (limited to 'nikola/plugins/task/authors.py')
-rw-r--r--nikola/plugins/task/authors.py32
1 files changed, 21 insertions, 11 deletions
diff --git a/nikola/plugins/task/authors.py b/nikola/plugins/task/authors.py
index 081d21d..ec61800 100644
--- a/nikola/plugins/task/authors.py
+++ b/nikola/plugins/task/authors.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright © 2015 Juanjo Conti.
+# Copyright © 2015-2016 Juanjo Conti and others.
# Permission is hereby granted, free of charge, to any
# person obtaining a copy of this software and associated
@@ -35,6 +35,8 @@ except ImportError:
from urllib.parse import urljoin # NOQA
from collections import defaultdict
+from blinker import signal
+
from nikola.plugin_categories import Task
from nikola import utils
@@ -47,13 +49,20 @@ class RenderAuthors(Task):
def set_site(self, site):
"""Set Nikola site."""
+ self.generate_author_pages = False
if site.config["ENABLE_AUTHOR_PAGES"]:
site.register_path_handler('author_index', self.author_index_path)
site.register_path_handler('author', self.author_path)
site.register_path_handler('author_atom', self.author_atom_path)
site.register_path_handler('author_rss', self.author_rss_path)
+ signal('scanned').connect(self.posts_scanned)
return super(RenderAuthors, self).set_site(site)
+ def posts_scanned(self, event):
+ """Called after posts are scanned via signal."""
+ self.generate_author_pages = self.site.config["ENABLE_AUTHOR_PAGES"] and len(self._posts_per_author()) > 1
+ self.site.GLOBAL_CONTEXT["author_pages_generated"] = self.generate_author_pages
+
def gen_tasks(self):
"""Render the author pages and feeds."""
kw = {
@@ -78,12 +87,10 @@ class RenderAuthors(Task):
"index_file": self.site.config['INDEX_FILE'],
}
- yield self.group_task()
self.site.scan_posts()
+ yield self.group_task()
- generate_author_pages = self.site.config["ENABLE_AUTHOR_PAGES"] and len(self._posts_per_author()) > 1
- self.site.GLOBAL_CONTEXT["author_pages_generated"] = generate_author_pages
- if generate_author_pages:
+ if self.generate_author_pages:
yield self.list_authors_page(kw)
if not self._posts_per_author(): # this may be self.site.posts_per_author
@@ -244,10 +251,13 @@ class RenderAuthors(Task):
}
return utils.apply_filters(task, kw['filters'])
- def slugify_author_name(self, name):
+ def slugify_author_name(self, name, lang=None):
"""Slugify an author name."""
+ if lang is None: # TODO: remove in v8
+ utils.LOGGER.warn("RenderAuthors.slugify_author_name() called without language!")
+ lang = ''
if self.site.config['SLUG_AUTHOR_PATH']:
- name = utils.slugify(name)
+ name = utils.slugify(name, lang)
return name
def author_index_path(self, name, lang):
@@ -272,13 +282,13 @@ class RenderAuthors(Task):
return [_f for _f in [
self.site.config['TRANSLATIONS'][lang],
self.site.config['AUTHOR_PATH'],
- self.slugify_author_name(name),
+ self.slugify_author_name(name, lang),
self.site.config['INDEX_FILE']] if _f]
else:
return [_f for _f in [
self.site.config['TRANSLATIONS'][lang],
self.site.config['AUTHOR_PATH'],
- self.slugify_author_name(name) + ".html"] if _f]
+ self.slugify_author_name(name, lang) + ".html"] if _f]
def author_atom_path(self, name, lang):
"""Link to an author's Atom feed.
@@ -288,7 +298,7 @@ class RenderAuthors(Task):
link://author_atom/joe => /authors/joe.atom
"""
return [_f for _f in [self.site.config['TRANSLATIONS'][lang],
- self.site.config['AUTHOR_PATH'], self.slugify_author_name(name) + ".atom"] if
+ self.site.config['AUTHOR_PATH'], self.slugify_author_name(name, lang) + ".atom"] if
_f]
def author_rss_path(self, name, lang):
@@ -299,7 +309,7 @@ class RenderAuthors(Task):
link://author_rss/joe => /authors/joe.rss
"""
return [_f for _f in [self.site.config['TRANSLATIONS'][lang],
- self.site.config['AUTHOR_PATH'], self.slugify_author_name(name) + ".xml"] if
+ self.site.config['AUTHOR_PATH'], self.slugify_author_name(name, lang) + ".xml"] if
_f]
def _add_extension(self, path, extension):