Mercurial > piecrust2
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) |