From ee782e79cdc770498492fc031c9a0e4d80fdc406 Mon Sep 17 00:00:00 2001 From: MinchinWeb Date: Sun, 21 Jan 2024 22:52:56 -0700 Subject: [PATCH] Resolve inter-site links in summaries. c.f. https://github.com/getpelican/pelican/issues/3265 c.f. https://github.com/MinchinWeb/minchin.pelican.plugins.summary/issues/5 --- pelican/__init__.py | 6 +++++- pelican/contents.py | 17 ++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/pelican/__init__.py b/pelican/__init__.py index a25f5624b..5e3011c74 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -120,11 +120,15 @@ def run(self): if hasattr(p, "generate_context"): p.generate_context() + # for plugins that create/edit the summary + logger.debug("Signal all_generators_finalized.send()") + signals.all_generators_finalized.send(generators) + + # update links in the summary, etc for p in generators: if hasattr(p, "refresh_metadata_intersite_links"): p.refresh_metadata_intersite_links() - signals.all_generators_finalized.send(generators) writer = self._get_writer() diff --git a/pelican/contents.py b/pelican/contents.py index 474e5bbfe..95826b675 100644 --- a/pelican/contents.py +++ b/pelican/contents.py @@ -513,19 +513,22 @@ def relative_dir(self): def refresh_metadata_intersite_links(self): for key in self.settings["FORMATTED_FIELDS"]: - if key in self.metadata and key != "summary": + if key in self.metadata and key is not "summary": value = self._update_content(self.metadata[key], self.get_siteurl()) self.metadata[key] = value setattr(self, key.lower(), value) # _summary is an internal variable that some plugins may be writing to, # so ensure changes to it are picked up - if ( - "summary" in self.settings["FORMATTED_FIELDS"] - and "summary" in self.metadata - ): - self._summary = self._update_content(self._summary, self.get_siteurl()) - self.metadata["summary"] = self._summary + if "summary" in self.settings["FORMATTED_FIELDS"]: + if hasattr(self, "_summary"): + self.metadata["summary"] = self._summary + + if "summary" in self.metadata: + self.metadata["summary"] = self._update_content(self.metadata["summary"], self.get_siteurl()) + + if hasattr(self, "_summary") and "summary" in self.metadata: + self._summary = self.metadata["summary"] class Page(Content):