Mercurial > piecrust2
comparison piecrust/sources/base.py @ 114:371a6c879ab9
When possible, try and batch-load pages so we only lock once.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 19 Oct 2014 00:33:28 -0700 |
parents | b3ce11b2cf36 |
children | 8d16ca75075f |
comparison
equal
deleted
inserted
replaced
113:de257cc40ce1 | 114:371a6c879ab9 |
---|---|
22 | 22 |
23 logger = logging.getLogger(__name__) | 23 logger = logging.getLogger(__name__) |
24 | 24 |
25 | 25 |
26 page_ref_pattern = re.compile(r'(?P<src>[\w]+)\:(?P<path>.*?)(;|$)') | 26 page_ref_pattern = re.compile(r'(?P<src>[\w]+)\:(?P<path>.*?)(;|$)') |
27 | |
28 | |
29 def build_pages(app, factories): | |
30 with app.env.page_repository.startBatchGet(): | |
31 for f in factories: | |
32 yield f.buildPage() | |
27 | 33 |
28 | 34 |
29 class PageNotFoundError(Exception): | 35 class PageNotFoundError(Exception): |
30 pass | 36 pass |
31 | 37 |
204 @property | 210 @property |
205 def root_dir(self): | 211 def root_dir(self): |
206 if self.is_theme_source: | 212 if self.is_theme_source: |
207 return self.app.theme_dir | 213 return self.app.theme_dir |
208 return self.app.root_dir | 214 return self.app.root_dir |
215 | |
216 def getPages(self): | |
217 return build_pages(self.app, self.getPageFactories()) | |
209 | 218 |
210 def getPageFactories(self): | 219 def getPageFactories(self): |
211 if self._factories is None: | 220 if self._factories is None: |
212 self._factories = list(self.buildPageFactories()) | 221 self._factories = list(self.buildPageFactories()) |
213 return self._factories | 222 return self._factories |
381 self.source = source | 390 self.source = source |
382 self.it = None # This is to permit recursive traversal of the | 391 self.it = None # This is to permit recursive traversal of the |
383 # iterator chain. It acts as the end. | 392 # iterator chain. It acts as the end. |
384 | 393 |
385 def __iter__(self): | 394 def __iter__(self): |
386 for factory in self.source.getPageFactories(): | 395 return self.source.getPages() |
387 yield factory.buildPage() | |
388 | 396 |
389 | 397 |
390 class DateSortIterator(object): | 398 class DateSortIterator(object): |
391 def __init__(self, it, reverse=True): | 399 def __init__(self, it, reverse=True): |
392 self.it = it | 400 self.it = it |