Mercurial > piecrust2
changeset 881:b4e10471e970
bake: Don't create bake jobs for overriden pages.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 17 Jun 2017 09:02:15 -0700 |
parents | 342e3ea24b5d |
children | acd9c3e8533f |
files | piecrust/pipelines/page.py |
diffstat | 1 files changed, 48 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/pipelines/page.py Thu Jun 15 22:55:32 2017 -0700 +++ b/piecrust/pipelines/page.py Sat Jun 17 09:02:15 2017 -0700 @@ -26,6 +26,54 @@ force=self.ctx.force) self._pagebaker.startWriterQueue() + def createJobs(self, ctx): + used_paths = {} + for rec in ctx.record_histories.current.records: + src_name = rec.name.split('@')[0] + for e in rec.getEntries(): + paths = e.getAllOutputPaths() + if paths is not None: + for p in paths: + used_paths[p] = (src_name, e) + + jobs = [] + route = self.source.route + pretty_urls = self.app.config.get('site/pretty_urls') + record = ctx.record_histories.current.getRecord(self.record_name) + + for item in self.source.getAllContents(): + route_params = item.metadata['route_params'] + uri = route.getUri(route_params) + path = self._pagebaker.getOutputPath(uri, pretty_urls) + override = used_paths.get(path) + if override is not None: + override_source_name, override_entry = override + override_source = self.app.getSource(override_source_name) + if override_source.config['realm'] == \ + self.source.config['realm']: + logger.error( + "Page '%s' would get baked to '%s' " + "but is overriden by '%s'." % + (item.spec, path, override_entry.item_spec)) + else: + logger.debug( + "Page '%s' would get baked to '%s' " + "but is overriden by '%s'." % + (item.spec, path, override_entry.item_spec)) + + entry = PagePipelineRecordEntry() + entry.item_spec = item.spec + entry.flags |= PagePipelineRecordEntry.FLAG_OVERRIDEN + record.addEntry(entry) + + continue + + jobs.append(self.createJob(item)) + + if len(jobs) > 0: + return jobs + return None + def mergeRecordEntry(self, record_entry, ctx): existing = ctx.record.getEntry(record_entry.item_spec) existing.errors += record_entry.errors