Merge pull request #1214 from hrbonz/article_generator_write_article

Add a signal on article writing
This commit is contained in:
Justin Mayer 2014-01-05 09:03:09 -08:00
commit b25001333d
3 changed files with 27 additions and 24 deletions

View file

@ -62,30 +62,31 @@ List of signals
Here is the list of currently implemented signals: Here is the list of currently implemented signals:
============================= ============================ =========================================================================== ================================= ============================ ===========================================================================
Signal Arguments Description Signal Arguments Description
============================= ============================ =========================================================================== ================================= ============================ ===========================================================================
initialized pelican object initialized pelican object
finalized pelican object invoked after all the generators are executed and just before pelican exits finalized pelican object invoked after all the generators are executed and just before pelican exits
usefull for custom post processing actions, such as: usefull for custom post processing actions, such as:
- minifying js/css assets. - minifying js/css assets.
- notify/ping search engines with an updated sitemap. - notify/ping search engines with an updated sitemap.
generator_init generator invoked in the Generator.__init__ generator_init generator invoked in the Generator.__init__
readers_init readers invoked in the Readers.__init__ readers_init readers invoked in the Readers.__init__
article_generator_context article_generator, metadata article_generator_context article_generator, metadata
article_generator_preread article_generator invoked before a article is read in ArticlesGenerator.generate_context; article_generator_preread article_generator invoked before a article is read in ArticlesGenerator.generate_context;
use if code needs to do something before every article is parsed use if code needs to do something before every article is parsed
article_generator_init article_generator invoked in the ArticlesGenerator.__init__ article_generator_init article_generator invoked in the ArticlesGenerator.__init__
article_generator_finalized article_generator invoked at the end of ArticlesGenerator.generate_context article_generator_finalized article_generator invoked at the end of ArticlesGenerator.generate_context
get_generators generators invoked in Pelican.get_generator_classes, article_generator_write_article article_generator, content invoked before writing each article, the article is passed as content
can return a Generator, or several get_generators generators invoked in Pelican.get_generator_classes,
generator in a tuple or in a list. can return a Generator, or several
page_generator_context page_generator, metadata generator in a tuple or in a list.
page_generator_init page_generator invoked in the PagesGenerator.__init__ page_generator_context page_generator, metadata
page_generator_finalized page_generator invoked at the end of PagesGenerator.generate_context page_generator_init page_generator invoked in the PagesGenerator.__init__
content_object_init content_object invoked at the end of Content.__init__ (see note below) page_generator_finalized page_generator invoked at the end of PagesGenerator.generate_context
content_written path, context invoked each time a content file is written. content_object_init content_object invoked at the end of Content.__init__ (see note below)
============================= ============================ =========================================================================== content_written path, context invoked each time a content file is written.
================================= ============================ ===========================================================================
The list is currently small, so don't hesitate to add signals and make a pull The list is currently small, so don't hesitate to add signals and make a pull
request if you need them! request if you need them!

View file

@ -265,6 +265,7 @@ class ArticlesGenerator(Generator):
def generate_articles(self, write): def generate_articles(self, write):
"""Generate the articles.""" """Generate the articles."""
for article in chain(self.translations, self.articles): for article in chain(self.translations, self.articles):
signals.article_generator_write_article.send(self, content=article)
write(article.save_as, self.get_template(article.template), write(article.save_as, self.get_template(article.template),
self.context, article=article, category=article.category, self.context, article=article, category=article.category,
override_output=hasattr(article, 'override_save_as')) override_output=hasattr(article, 'override_save_as'))

View file

@ -18,6 +18,7 @@ generator_init = signal('generator_init')
article_generator_init = signal('article_generator_init') article_generator_init = signal('article_generator_init')
article_generator_finalized = signal('article_generator_finalized') article_generator_finalized = signal('article_generator_finalized')
article_generator_write_article = signal('article_generator_write_article')
page_generator_init = signal('page_generator_init') page_generator_init = signal('page_generator_init')
page_generator_finalized = signal('page_generator_finalized') page_generator_finalized = signal('page_generator_finalized')