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