diff options
author | Alexis Métaireau <alexis@notmyidea.org> | 2013-08-17 12:48:34 +0200 |
---|---|---|
committer | Alexis Métaireau <alexis@notmyidea.org> | 2013-08-17 12:48:34 +0200 |
commit | 339955376e1f84fb5209dad9f18bc802f006d0e1 (patch) | |
tree | 13aa69ed1249c1aecd06cef7f9bd45b00f5b9855 | |
parent | 2a599b864624f483149739bb2c86e812cb74a2e0 (diff) | |
download | pelican-content-written-signal.tar.gz |
Add a content_written signalcontent-written-signal
-rw-r--r-- | docs/plugins.rst | 1 | ||||
-rw-r--r-- | pelican/signals.py | 3 | ||||
-rw-r--r-- | pelican/writers.py | 7 |
3 files changed, 11 insertions, 0 deletions
diff --git a/docs/plugins.rst b/docs/plugins.rst index 6e292efd..29d67e24 100644 --- a/docs/plugins.rst +++ b/docs/plugins.rst @@ -84,6 +84,7 @@ page_generate_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 diff --git a/pelican/signals.py b/pelican/signals.py index 77802e88..e92272c9 100644 --- a/pelican/signals.py +++ b/pelican/signals.py @@ -37,3 +37,6 @@ static_generator_preread = signal('static_generator_preread') static_generator_context = signal('static_generator_context') content_object_init = signal('content_object_init') + +# Writers signals +content_written = signal('content_written') diff --git a/pelican/writers.py b/pelican/writers.py index 59642cd9..da105929 100644 --- a/pelican/writers.py +++ b/pelican/writers.py @@ -11,8 +11,10 @@ if not six.PY3: from feedgenerator import Atom1Feed, Rss201rev2Feed from jinja2 import Markup + from pelican.paginator import Paginator from pelican.utils import get_relative_path, path_to_url, set_date_tzinfo +from pelican import signals logger = logging.getLogger(__name__) @@ -151,10 +153,15 @@ class Writer(object): os.makedirs(os.path.dirname(path)) except Exception: pass + with self._open_w(path, 'utf-8', override=override) as f: f.write(output) logger.info('writing {}'.format(path)) + # Send a signal to say we're writing a file with some specific + # local context. + signals.content_written.send(path, context=localcontext) + localcontext = context.copy() if relative_urls: relative_url = path_to_url(get_relative_path(name)) |