comparison piecrust/baking/worker.py @ 430:21e26ed867b6

internal: Create full route metadata in one place. Instead of combining things at different moments to make up route metadata, build it once and for all up-front and use that.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 27 Jun 2015 08:27:35 -0700
parents ed5ccd4cce49
children 32c7c2d219d2
comparison
equal deleted inserted replaced
429:ca5a3c970263 430:21e26ed867b6
4 import logging 4 import logging
5 from piecrust.app import PieCrust 5 from piecrust.app import PieCrust
6 from piecrust.baking.single import PageBaker, BakingError 6 from piecrust.baking.single import PageBaker, BakingError
7 from piecrust.rendering import ( 7 from piecrust.rendering import (
8 QualifiedPage, PageRenderingContext, render_page_segments) 8 QualifiedPage, PageRenderingContext, render_page_segments)
9 from piecrust.routing import create_route_metadata
9 from piecrust.sources.base import PageFactory 10 from piecrust.sources.base import PageFactory
10 11
11 12
12 logger = logging.getLogger(__name__) 13 logger = logging.getLogger(__name__)
13 14
216 route = self.app.getRoute(fac.source.name, fac.metadata, 217 route = self.app.getRoute(fac.source.name, fac.metadata,
217 skip_taxonomies=True) 218 skip_taxonomies=True)
218 assert route is not None 219 assert route is not None
219 220
220 page = fac.buildPage() 221 page = fac.buildPage()
221 route_metadata = copy.deepcopy(fac.metadata) 222 route_metadata = create_route_metadata(page)
222 qp = QualifiedPage(page, route, route_metadata) 223 qp = QualifiedPage(page, route, route_metadata)
223 ctx = PageRenderingContext(qp) 224 ctx = PageRenderingContext(qp)
224 225
225 result = RenderFirstSubJobResult(fac.path) 226 result = RenderFirstSubJobResult(fac.path)
226 logger.debug("Preparing page: %s" % fac.ref_spec) 227 logger.debug("Preparing page: %s" % fac.ref_spec)
252 else: 253 else:
253 route = self.app.getRoute(fac.source.name, route_metadata, 254 route = self.app.getRoute(fac.source.name, route_metadata,
254 skip_taxonomies=True) 255 skip_taxonomies=True)
255 assert route is not None 256 assert route is not None
256 257
258 page = fac.buildPage()
259 qp = QualifiedPage(page, route, route_metadata)
260
257 result = BakeJobResult(fac.path, tax_info) 261 result = BakeJobResult(fac.path, tax_info)
258 previous_entry = job.payload.previous_entry 262 previous_entry = job.payload.previous_entry
259 dirty_source_names = job.payload.dirty_source_names 263 dirty_source_names = job.payload.dirty_source_names
260 logger.debug("Baking page: %s" % fac.ref_spec) 264 logger.debug("Baking page: %s" % fac.ref_spec)
261 try: 265 try:
262 sub_entries = self.page_baker.bake( 266 sub_entries = self.page_baker.bake(
263 fac, route, route_metadata, previous_entry, 267 qp, previous_entry, dirty_source_names, tax_info)
264 dirty_source_names, tax_info)
265 result.sub_entries = sub_entries 268 result.sub_entries = sub_entries
266 269
267 except BakingError as ex: 270 except BakingError as ex:
268 logger.debug("Got baking error. Sending it to master.") 271 logger.debug("Got baking error. Sending it to master.")
269 result.errors = _get_errors(ex) 272 result.errors = _get_errors(ex)