Mercurial > piecrust2
comparison piecrust/sources/base.py @ 905:1d0364614665
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.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 23 Jul 2017 08:26:57 -0700 |
parents | 504ddb370df8 |
children | 0eca08213354 |
comparison
equal
deleted
inserted
replaced
904:cc2647360036 | 905:1d0364614665 |
---|---|
82 def __init__(self, app, name, config): | 82 def __init__(self, app, name, config): |
83 self.app = app | 83 self.app = app |
84 self.name = name | 84 self.name = name |
85 self.config = config or {} | 85 self.config = config or {} |
86 self._cache = None | 86 self._cache = None |
87 self._page_cache = None | |
87 | 88 |
88 @property | 89 @property |
89 def is_theme_source(self): | 90 def is_theme_source(self): |
90 return self.config['realm'] == REALM_THEME | 91 return self.config['realm'] == REALM_THEME |
91 | 92 |
96 def openItem(self, item, mode='r', **kwargs): | 97 def openItem(self, item, mode='r', **kwargs): |
97 raise NotImplementedError() | 98 raise NotImplementedError() |
98 | 99 |
99 def getItemMtime(self, item): | 100 def getItemMtime(self, item): |
100 raise NotImplementedError() | 101 raise NotImplementedError() |
102 | |
103 def getAllPages(self): | |
104 if self._page_cache is not None: | |
105 return self._page_cache | |
106 | |
107 getter = self.app.getPage | |
108 self._page_cache = [getter(self, i) for i in self.getAllContents()] | |
109 return self._page_cache | |
101 | 110 |
102 def getAllContents(self): | 111 def getAllContents(self): |
103 if self._cache is not None: | 112 if self._cache is not None: |
104 return self._cache | 113 return self._cache |
105 | 114 |