From f750f38d60f8cb25c94685b3b01b31a2cde9cb32 Mon Sep 17 00:00:00 2001 From: Stefan hr Berder Date: Thu, 2 Jan 2014 18:43:45 +0100 Subject: [PATCH] add a signal on article writing --- docs/plugins.rst | 49 ++++++++++++++++++++++--------------------- pelican/generators.py | 1 + pelican/signals.py | 1 + 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/docs/plugins.rst b/docs/plugins.rst index 5e311fb6..5a4bca22 100644 --- a/docs/plugins.rst +++ b/docs/plugins.rst @@ -62,30 +62,31 @@ List of signals Here is the list of currently implemented signals: -============================= ============================ =========================================================================== -Signal Arguments Description -============================= ============================ =========================================================================== -initialized pelican object -finalized pelican object invoked after all the generators are executed and just before pelican exits - usefull for custom post processing actions, such as: - - minifying js/css assets. - - notify/ping search engines with an updated sitemap. -generator_init generator invoked in the Generator.__init__ -readers_init readers invoked in the Readers.__init__ -article_generator_context article_generator, metadata -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 -article_generator_init article_generator invoked in the ArticlesGenerator.__init__ -article_generator_finalized article_generator invoked at the end of ArticlesGenerator.generate_context -get_generators generators invoked in Pelican.get_generator_classes, - can return a Generator, or several - generator in a tuple or in a list. -page_generator_context page_generator, metadata -page_generator_init page_generator invoked in the PagesGenerator.__init__ -page_generator_finalized page_generator invoked at the end of PagesGenerator.generate_context -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. -============================= ============================ =========================================================================== +================================= ============================ =========================================================================== +Signal Arguments Description +================================= ============================ =========================================================================== +initialized pelican object +finalized pelican object invoked after all the generators are executed and just before pelican exits + usefull for custom post processing actions, such as: + - minifying js/css assets. + - notify/ping search engines with an updated sitemap. +generator_init generator invoked in the Generator.__init__ +readers_init readers invoked in the Readers.__init__ +article_generator_context article_generator, metadata +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 +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_write_article article_generator, content invoked before writing each article, the article is passed as content +get_generators generators invoked in Pelican.get_generator_classes, + can return a Generator, or several + generator in a tuple or in a list. +page_generator_context page_generator, metadata +page_generator_init page_generator invoked in the PagesGenerator.__init__ +page_generator_finalized page_generator invoked at the end of PagesGenerator.generate_context +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 request if you need them! diff --git a/pelican/generators.py b/pelican/generators.py index 2fbb0e1c..01731efd 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -265,6 +265,7 @@ class ArticlesGenerator(Generator): def generate_articles(self, write): """Generate the 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), self.context, article=article, category=article.category, override_output=hasattr(article, 'override_save_as')) diff --git a/pelican/signals.py b/pelican/signals.py index e92272c9..8fc1d7eb 100644 --- a/pelican/signals.py +++ b/pelican/signals.py @@ -18,6 +18,7 @@ generator_init = signal('generator_init') article_generator_init = signal('article_generator_init') 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_finalized = signal('page_generator_finalized')