Skip to content

Commit

Permalink
Have relevant plugins use all_generators_finalized signal
Browse files Browse the repository at this point in the history
clean_summary, read_more_link, representative_image, summary
plugins now use all_generators_finalized signal so as to avoid
issue #314. They fallback to current behavior is said signal is
not yet available.

See also: getpelican/pelican#1616

Closes #314.
  • Loading branch information
kernc committed Jul 12, 2015
1 parent 84fa779 commit 256bade
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions summary.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from __future__ import unicode_literals
from pelican import signals
from pelican.generators import ArticlesGenerator, StaticGenerator

def initialized(pelican):
from pelican.settings import DEFAULT_CONFIG
Expand All @@ -21,7 +22,7 @@ def initialized(pelican):
pelican.settings.setdefault('SUMMARY_END_MARKER',
'<!-- PELICAN_END_SUMMARY -->')

def content_object_init(instance):
def extract_summary(instance):
# if summary is already specified, use it
# if there is no content, there's nothing to do
if hasattr(instance, '_summary'):
Expand All @@ -35,7 +36,6 @@ def content_object_init(instance):
begin_marker = instance.settings['SUMMARY_BEGIN_MARKER']
end_marker = instance.settings['SUMMARY_END_MARKER']

# extract out our summary
content = instance._content
begin_summary = -1
end_summary = -1
Expand Down Expand Up @@ -69,6 +69,22 @@ def content_object_init(instance):
instance._summary = summary
instance.has_summary = True


def run_plugin(generators):
for generator in generators:
if isinstance(generator, ArticlesGenerator):
for article in generator.articles:
extract_summary(article)
elif isinstance(generator, PagesGenerator):
for page in generator.pages:
extract_summary(page)


def register():
signals.initialized.connect(initialized)
signals.content_object_init.connect(content_object_init)
try:
signals.all_generators_finalized.connect(run_plugin)
except AttributeError:
# NOTE: This results in #314 so shouldn't really be relied on
# https://github.com/getpelican/pelican-plugins/issues/314
signals.content_object_init.connect(extract_summary)

0 comments on commit 256bade

Please sign in to comment.