comparison piecrust/pipelines/page.py @ 979:45ad976712ec

tests: Big push to get the tests to pass again. - Lots of fixes everywhere in the code. - Try to handle debug logging in the multiprocessing worker pool when running in pytest. Not perfect, but usable for now. - Replace all `.md` test files with `.html` since now a auto-format extension always sets the format. - Replace `out` with `outfiles` in most places since now blog archives are added to the bake output and I don't want to add expected outputs for blog archives everywhere.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 29 Oct 2017 22:51:57 -0700
parents abc52a6262a1
children 8adc27285d93
comparison
equal deleted inserted replaced
978:7e51d14097cb 979:45ad976712ec
1 import logging 1 import logging
2 from piecrust.pipelines.base import ContentPipeline 2 from piecrust.pipelines.base import ContentPipeline
3 from piecrust.pipelines._pagebaker import PageBaker 3 from piecrust.pipelines._pagebaker import PageBaker, get_output_path
4 from piecrust.pipelines._pagerecords import PagePipelineRecordEntry 4 from piecrust.pipelines._pagerecords import PagePipelineRecordEntry
5 from piecrust.sources.base import AbortedSourceUseError 5 from piecrust.sources.base import AbortedSourceUseError
6 6
7 7
8 logger = logging.getLogger(__name__) 8 logger = logging.getLogger(__name__)
37 if paths is not None: 37 if paths is not None:
38 for p in paths: 38 for p in paths:
39 used_paths[p] = (src_name, e) 39 used_paths[p] = (src_name, e)
40 40
41 jobs = [] 41 jobs = []
42 app = self.app
42 route = self.source.route 43 route = self.source.route
43 pretty_urls = self.app.config.get('site/pretty_urls') 44 out_dir = self.ctx.out_dir
45 pretty_urls = app.config.get('site/pretty_urls')
44 record = ctx.record_histories.current.getRecord(self.record_name) 46 record = ctx.record_histories.current.getRecord(self.record_name)
45 47
46 for item in self.source.getAllContents(): 48 for item in self.source.getAllContents():
47 route_params = item.metadata['route_params'] 49 route_params = item.metadata['route_params']
48 uri = route.getUri(route_params) 50 uri = route.getUri(route_params)
49 path = self._pagebaker.getOutputPath(uri, pretty_urls) 51 path = get_output_path(app, out_dir, uri, pretty_urls)
50 override = used_paths.get(path) 52 override = used_paths.get(path)
53
51 if override is not None: 54 if override is not None:
52 override_source_name, override_entry = override 55 override_source_name, override_entry = override
53 override_source = self.app.getSource(override_source_name) 56 override_source = app.getSource(override_source_name)
54 if override_source.config['realm'] == \ 57 if override_source.config['realm'] == \
55 self.source.config['realm']: 58 self.source.config['realm']:
56 logger.error( 59 logger.error(
57 "Page '%s' would get baked to '%s' " 60 "Page '%s' would get baked to '%s' "
58 "but is overriden by '%s'." % 61 "but is overriden by '%s'." %
76 return jobs 79 return jobs
77 return None 80 return None
78 81
79 def mergeRecordEntry(self, record_entry, ctx): 82 def mergeRecordEntry(self, record_entry, ctx):
80 existing = ctx.record.getEntry(record_entry.item_spec) 83 existing = ctx.record.getEntry(record_entry.item_spec)
84 existing.flags |= record_entry.flags
81 existing.errors += record_entry.errors 85 existing.errors += record_entry.errors
82 existing.flags |= record_entry.flags 86 existing.subs += record_entry.subs
83 existing.subs = record_entry.subs
84 87
85 def run(self, job, ctx, result): 88 def run(self, job, ctx, result):
86 step_num = job.step_num 89 step_num = job.step_num
87 if step_num == 0: 90 if step_num == 0:
88 self._loadPage(job.content_item, ctx, result) 91 self._loadPage(job.content_item, ctx, result)