comparison piecrust/baking/baker.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 aefe70229fdd
comparison
equal deleted inserted replaced
429:ca5a3c970263 430:21e26ed867b6
11 BakeWorkerJob, LoadJobPayload, RenderFirstSubJobPayload, 11 BakeWorkerJob, LoadJobPayload, RenderFirstSubJobPayload,
12 BakeJobPayload, 12 BakeJobPayload,
13 JOB_LOAD, JOB_RENDER_FIRST, JOB_BAKE) 13 JOB_LOAD, JOB_RENDER_FIRST, JOB_BAKE)
14 from piecrust.chefutil import ( 14 from piecrust.chefutil import (
15 format_timed_scope, format_timed) 15 format_timed_scope, format_timed)
16 from piecrust.routing import create_route_metadata
16 from piecrust.sources.base import ( 17 from piecrust.sources.base import (
17 REALM_NAMES, REALM_USER, REALM_THEME) 18 REALM_NAMES, REALM_USER, REALM_THEME)
18 19
19 20
20 logger = logging.getLogger(__name__) 21 logger = logging.getLogger(__name__)
483 logger.debug("Ignoring %s because it had previous " 484 logger.debug("Ignoring %s because it had previous "
484 "errors." % fac.ref_spec) 485 "errors." % fac.ref_spec)
485 return False 486 return False
486 487
487 # Build the route metadata and find the appropriate route. 488 # Build the route metadata and find the appropriate route.
488 route_metadata = copy.deepcopy(fac.metadata) 489 page = fac.buildPage()
490 route_metadata = create_route_metadata(page)
489 if tax_info is not None: 491 if tax_info is not None:
490 tax = self.app.getTaxonomy(tax_info.taxonomy_name) 492 tax = self.app.getTaxonomy(tax_info.taxonomy_name)
491 route = self.app.getTaxonomyRoute(tax_info.taxonomy_name, 493 route = self.app.getTaxonomyRoute(tax_info.taxonomy_name,
492 tax_info.source_name) 494 tax_info.source_name)
493 495
499 assert route is not None 501 assert route is not None
500 502
501 # Figure out if this page is overriden by another previously 503 # Figure out if this page is overriden by another previously
502 # baked page. This happens for example when the user has 504 # baked page. This happens for example when the user has
503 # made a page that has the same page/URL as a theme page. 505 # made a page that has the same page/URL as a theme page.
504 page = fac.buildPage() 506 uri = route.getUri(route_metadata)
505 uri = route.getUri(route_metadata, provider=page)
506 override_entry = record.getOverrideEntry(page.path, uri) 507 override_entry = record.getOverrideEntry(page.path, uri)
507 if override_entry is not None: 508 if override_entry is not None:
508 override_source = self.app.getSource( 509 override_source = self.app.getSource(
509 override_entry.source_name) 510 override_entry.source_name)
510 if override_source.realm == fac.source.realm: 511 if override_source.realm == fac.source.realm: