Mercurial > piecrust2
comparison piecrust/app.py @ 853:f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
The asset pipeline is still the only function pipeline at this point.
* No more `QualifiedPage`, and several other pieces of code deleted.
* Data providers are simpler and more focused. For instance, the page iterator
doesn't try to support other types of items.
* Route parameters are proper known source metadata to remove the confusion
between the two.
* Make the baker and pipeline more correctly manage records and record
histories.
* Add support for record collapsing and deleting stale outputs in the asset
pipeline.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Sun, 21 May 2017 00:06:59 -0700 |
| parents | 4850f8c21b6e |
| children | 08e02c2a2a1a |
comparison
equal
deleted
inserted
replaced
| 852:4850f8c21b6e | 853:f070a4fc033c |
|---|---|
| 32 if cache: | 32 if cache: |
| 33 self.cache = ExtensibleCache(self.cache_dir) | 33 self.cache = ExtensibleCache(self.cache_dir) |
| 34 else: | 34 else: |
| 35 self.cache = NullExtensibleCache() | 35 self.cache = NullExtensibleCache() |
| 36 | 36 |
| 37 if env is None: | |
| 38 env = StandardEnvironment() | |
| 37 self.env = env | 39 self.env = env |
| 38 if self.env is None: | 40 env.initialize(self) |
| 39 self.env = StandardEnvironment() | 41 |
| 40 self.env.initialize(self) | 42 stats = env.stats |
| 41 self.env.stats.registerTimer('SiteConfigLoad') | 43 stats.registerTimer('SiteConfigLoad') |
| 42 self.env.stats.registerTimer('PageLoad') | 44 stats.registerTimer('PageLoad') |
| 43 self.env.stats.registerTimer("PageDataBuild") | 45 stats.registerTimer("PageDataBuild") |
| 44 self.env.stats.registerTimer("BuildRenderData") | 46 stats.registerTimer("BuildRenderData") |
| 45 self.env.stats.registerTimer("PageRender") | 47 stats.registerTimer("PageRender") |
| 46 self.env.stats.registerTimer("PageRenderSegments") | 48 stats.registerTimer("PageRenderSegments") |
| 47 self.env.stats.registerTimer("PageRenderLayout") | 49 stats.registerTimer("PageRenderLayout") |
| 48 self.env.stats.registerTimer("PageSerialize") | 50 stats.registerTimer("PageSerialize") |
| 49 | 51 |
| 50 @cached_property | 52 @cached_property |
| 51 def config(self): | 53 def config(self): |
| 52 logger.debug("Creating site configuration...") | 54 logger.debug("Creating site configuration...") |
| 53 start_time = time.perf_counter() | 55 start_time = time.perf_counter() |
| 191 | 193 |
| 192 def getSource(self, source_name): | 194 def getSource(self, source_name): |
| 193 for source in self.sources: | 195 for source in self.sources: |
| 194 if source.name == source_name: | 196 if source.name == source_name: |
| 195 return source | 197 return source |
| 196 return None | 198 |
| 197 | 199 from piecrust.sources.base import SourceNotFoundError |
| 198 def getSourceRoutes(self, source_name): | 200 raise SourceNotFoundError(source_name) |
| 201 | |
| 202 def getSourceRoute(self, source_name): | |
| 199 for route in self.routes: | 203 for route in self.routes: |
| 200 if route.source_name == source_name: | 204 if route.source_name == source_name: |
| 201 yield route | |
| 202 | |
| 203 def getSourceRoute(self, source_name, route_params): | |
| 204 for route in self.getSourceRoutes(source_name): | |
| 205 if (route_params is None or | |
| 206 route.matchesParameters(route_params)): | |
| 207 return route | 205 return route |
| 208 return None | 206 |
| 207 from piecrust.routing import RouteNotFoundError | |
| 208 raise RouteNotFoundError(source_name) | |
| 209 | 209 |
| 210 def getPublisher(self, target_name): | 210 def getPublisher(self, target_name): |
| 211 for pub in self.publishers: | 211 for pub in self.publishers: |
| 212 if pub.target == target_name: | 212 if pub.target == target_name: |
| 213 return pub | 213 return pub |
| 214 return None | 214 return None |
| 215 | 215 |
| 216 def getPage(self, content_item): | 216 def getPage(self, source, content_item): |
| 217 cache_key = content_item.spec | 217 cache_key = content_item.spec |
| 218 return self.env.page_repository.get( | 218 return self.env.page_repository.get( |
| 219 cache_key, | 219 cache_key, |
| 220 lambda: Page(content_item)) | 220 lambda: Page(source, content_item)) |
| 221 | 221 |
| 222 def _get_dir(self, default_rel_dir): | 222 def _get_dir(self, default_rel_dir): |
| 223 abs_dir = os.path.join(self.root_dir, default_rel_dir) | 223 abs_dir = os.path.join(self.root_dir, default_rel_dir) |
| 224 if os.path.isdir(abs_dir): | 224 if os.path.isdir(abs_dir): |
| 225 return abs_dir | 225 return abs_dir |
