mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
merge rachid changes
This commit is contained in:
commit
299277b140
4 changed files with 41 additions and 5 deletions
|
|
@ -48,20 +48,23 @@ which you map the signals to your plugin logic. Let's take a simple example::
|
|||
signals.initialized.connect(test)
|
||||
|
||||
|
||||
|
||||
List of signals
|
||||
===============
|
||||
|
||||
Here is the list of currently implemented signals:
|
||||
|
||||
========================= ============================ ===========================================================================
|
||||
Signal Arguments Description
|
||||
========================= ============================ ===========================================================================
|
||||
========================= ======================================= =========================================
|
||||
Signal Arguments Description
|
||||
========================= ======================================= =========================================
|
||||
>>>>>>> rach/master
|
||||
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.
|
||||
article_generate_context article_generator, metadata
|
||||
<<<<<<< HEAD
|
||||
article_generator_init article_generator invoked in the ArticlesGenerator.__init__
|
||||
get_generators generators invoked in Pelican.get_generator_classes,
|
||||
can return a Generator, or several
|
||||
|
|
@ -73,6 +76,25 @@ pages_generator_init pages_generator invoked in the PagesG
|
|||
The list is currently small, don't hesitate to add signals and make a pull
|
||||
request if you need them!
|
||||
|
||||
.. note::
|
||||
|
||||
The signal ``content_object_init`` can send different type of object as
|
||||
argument. If you want to register only one type of object then you will
|
||||
need to specify the sender when you are connecting to the signal.
|
||||
|
||||
::
|
||||
|
||||
from pelican import signals
|
||||
from pelican import contents
|
||||
|
||||
def test(sender, instance):
|
||||
print "%s : %s content initialized !!" % (sender, instance)
|
||||
|
||||
def register():
|
||||
signals.content_object_init.connect(test, sender=contents.Article)
|
||||
|
||||
|
||||
|
||||
List of plugins
|
||||
===============
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ from sys import platform, stdin
|
|||
|
||||
from pelican.settings import _DEFAULT_CONFIG
|
||||
from pelican.utils import slugify, truncate_html_words
|
||||
|
||||
from pelican import signals
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -106,6 +106,8 @@ class Page(object):
|
|||
if 'summary' in metadata:
|
||||
self._summary = metadata['summary']
|
||||
|
||||
signals.content_object_init.send(self.__class__, instance=self)
|
||||
|
||||
def check_properties(self):
|
||||
"""test that each mandatory property is set."""
|
||||
for prop in self.mandatory_properties:
|
||||
|
|
|
|||
|
|
@ -7,3 +7,4 @@ article_generator_init = signal('article_generator_init')
|
|||
get_generators = signal('get_generators')
|
||||
pages_generate_context = signal('pages_generate_context')
|
||||
pages_generator_init = signal('pages_generator_init')
|
||||
content_object_init = signal('content_object_init')
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from .support import unittest
|
|||
from pelican.contents import Page, Article
|
||||
from pelican.settings import _DEFAULT_CONFIG
|
||||
from pelican.utils import truncate_html_words
|
||||
|
||||
from pelican.signals import content_object_init
|
||||
from jinja2.utils import generate_lorem_ipsum
|
||||
|
||||
# generate one paragraph, enclosed with <p>
|
||||
|
|
@ -158,6 +158,17 @@ class TestPage(unittest.TestCase):
|
|||
|
||||
return page_kwargs
|
||||
|
||||
def test_signal(self):
|
||||
"""If a title is given, it should be used to generate the slug."""
|
||||
|
||||
def receiver_test_function(sender,instance):
|
||||
pass
|
||||
|
||||
content_object_init.connect(receiver_test_function ,sender=Page)
|
||||
page = Page(**self.page_kwargs)
|
||||
self.assertTrue(content_object_init.has_receivers_for(Page))
|
||||
|
||||
|
||||
class TestArticle(TestPage):
|
||||
def test_template(self):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue