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')