From ed907b4094c49d5014716bca82a77265bcc49091 Mon Sep 17 00:00:00 2001 From: Bruno Binet Date: Fri, 1 Mar 2013 00:06:05 +0100 Subject: [PATCH 1/3] PageClass arg is useless in content_object_init --- pelican/contents.py | 2 +- pelican/plugins/summary.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pelican/contents.py b/pelican/contents.py index 8a9be817..873e89cd 100644 --- a/pelican/contents.py +++ b/pelican/contents.py @@ -112,7 +112,7 @@ class Page(object): if 'summary' in metadata: self._summary = metadata['summary'] - signals.content_object_init.send(self.__class__, instance=self) + signals.content_object_init.send(self) def check_properties(self): """test that each mandatory property is set.""" diff --git a/pelican/plugins/summary.py b/pelican/plugins/summary.py index cd433b7c..8b1b3ae3 100644 --- a/pelican/plugins/summary.py +++ b/pelican/plugins/summary.py @@ -14,7 +14,7 @@ def initialized(pelican): pelican.settings.setdefault('SUMMARY_END_MARKER', '') -def content_object_init(PageClass, instance): +def content_object_init(instance): # if summary is already specified, use it if 'summary' in instance.metadata: return From d68d2debf92bbd6528334ef19fb593cac441aab6 Mon Sep 17 00:00:00 2001 From: Bruno Binet Date: Fri, 1 Mar 2013 00:06:52 +0100 Subject: [PATCH 2/3] remove hardcoded values for SUMMARY_BEGIN_MARKER and SUMMARY_END_MARKER --- pelican/plugins/summary.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pelican/plugins/summary.py b/pelican/plugins/summary.py index 8b1b3ae3..0549ca7d 100644 --- a/pelican/plugins/summary.py +++ b/pelican/plugins/summary.py @@ -30,8 +30,6 @@ def content_object_init(instance): prev_get_content = instance.get_content def get_content(self, siteurl): content = prev_get_content(siteurl) - self.settings['SUMMARY_BEGIN_MARKER'] = '' - self.settings['SUMMARY_END_MARKER'] = '' if self.settings['SUMMARY_BEGIN_MARKER']: content = content.replace( self.settings['SUMMARY_BEGIN_MARKER'], '', 1) From 03f87057c2110acf3d9f605aa68ddad42eb15ae2 Mon Sep 17 00:00:00 2001 From: Bruno Binet Date: Fri, 1 Mar 2013 01:34:18 +0100 Subject: [PATCH 3/3] update summary plugin so that tests are fixed (hopefully) --- pelican/plugins/summary.py | 47 ++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/pelican/plugins/summary.py b/pelican/plugins/summary.py index 0549ca7d..b32d59c5 100644 --- a/pelican/plugins/summary.py +++ b/pelican/plugins/summary.py @@ -19,17 +19,8 @@ def content_object_init(instance): if 'summary' in instance.metadata: return - try: - content = instance.content - except: - # in some tests, this fails because a context has not been set - return - - # monkey patch a new function around get_content that removes summary - # markers - prev_get_content = instance.get_content - def get_content(self, siteurl): - content = prev_get_content(siteurl) + def _get_content(self): + content = self._content if self.settings['SUMMARY_BEGIN_MARKER']: content = content.replace( self.settings['SUMMARY_BEGIN_MARKER'], '', 1) @@ -37,23 +28,25 @@ def content_object_init(instance): content = content.replace( self.settings['SUMMARY_END_MARKER'], '', 1) return content - instance.get_content = types.MethodType(get_content, instance) - + instance._get_content = types.MethodType(_get_content, instance) + # extract out our summary - begin_summary = -1 - end_summary = -1 - if instance.settings['SUMMARY_BEGIN_MARKER']: - begin_summary = content.find(instance.settings['SUMMARY_BEGIN_MARKER']) - if instance.settings['SUMMARY_END_MARKER']: - end_summary = content.find(instance.settings['SUMMARY_END_MARKER']) - if begin_summary != -1 or end_summary != -1: - # the beginning position has to take into account the length - # of the marker - begin_summary = (begin_summary + - len(instance.settings['SUMMARY_BEGIN_MARKER']) - if begin_summary != -1 else 0) - end_summary = end_summary if end_summary != -1 else None - instance._summary = content[begin_summary:end_summary] + if not hasattr(instance, '_summary'): + content = instance._content + begin_summary = -1 + end_summary = -1 + if instance.settings['SUMMARY_BEGIN_MARKER']: + begin_summary = content.find(instance.settings['SUMMARY_BEGIN_MARKER']) + if instance.settings['SUMMARY_END_MARKER']: + end_summary = content.find(instance.settings['SUMMARY_END_MARKER']) + if begin_summary != -1 or end_summary != -1: + # the beginning position has to take into account the length + # of the marker + begin_summary = (begin_summary + + len(instance.settings['SUMMARY_BEGIN_MARKER']) + if begin_summary != -1 else 0) + end_summary = end_summary if end_summary != -1 else None + instance._summary = content[begin_summary:end_summary] def register(): signals.initialized.connect(initialized)