# HG changeset patch # User Ludovic Chabant # Date 1500823617 25200 # Node ID 1d03646146650df99f9ea102f99f03bf7aecbde2 # Parent cc26473600360fae800aeb6d796c67e6436d2d4a internal: Sources can cache their pages in addition to their items. Added `getAllPages` to content sources to prevent having to look up cached page objects in the page repository all the time. diff -r cc2647360036 -r 1d0364614665 piecrust/dataproviders/blog.py --- a/piecrust/dataproviders/blog.py Sun Jul 23 08:25:45 2017 -0700 +++ b/piecrust/dataproviders/blog.py Sun Jul 23 08:26:57 2017 -0700 @@ -87,12 +87,10 @@ taxonomies.append(Taxonomy(tn, tax_cfg)) tax_index[tn] = {} - app = self._app page = self._page source = self._sources[0] - for item in source.getAllContents(): - post = app.getPage(source, item) + for post in source.getAllPages(): post_dt = post.datetime year = post_dt.year diff -r cc2647360036 -r 1d0364614665 piecrust/dataproviders/pageiterator.py --- a/piecrust/dataproviders/pageiterator.py Sun Jul 23 08:25:45 2017 -0700 +++ b/piecrust/dataproviders/pageiterator.py Sun Jul 23 08:26:57 2017 -0700 @@ -362,9 +362,7 @@ def __iter__(self): source = self.source - app = source.app - for item in source.getAllContents(): - yield app.getPage(source, item) + yield from source.getAllPages() class PaginationDataBuilderIterator: diff -r cc2647360036 -r 1d0364614665 piecrust/sources/base.py --- a/piecrust/sources/base.py Sun Jul 23 08:25:45 2017 -0700 +++ b/piecrust/sources/base.py Sun Jul 23 08:26:57 2017 -0700 @@ -84,6 +84,7 @@ self.name = name self.config = config or {} self._cache = None + self._page_cache = None @property def is_theme_source(self): @@ -99,6 +100,14 @@ def getItemMtime(self, item): raise NotImplementedError() + def getAllPages(self): + if self._page_cache is not None: + return self._page_cache + + getter = self.app.getPage + self._page_cache = [getter(self, i) for i in self.getAllContents()] + return self._page_cache + def getAllContents(self): if self._cache is not None: return self._cache diff -r cc2647360036 -r 1d0364614665 piecrust/sources/blogarchives.py --- a/piecrust/sources/blogarchives.py Sun Jul 23 08:25:45 2017 -0700 +++ b/piecrust/sources/blogarchives.py Sun Jul 23 08:26:57 2017 -0700 @@ -108,11 +108,7 @@ return month_index = {} - src = self._inner_source - app = src.app - for item in self._inner_source.getAllContents(): - page = app.getPage(src, item) - + for page in self._inner_source.getAllPages(): if page.datetime.year != self._year: continue