Mercurial > piecrust2
comparison piecrust/pipelines/page.py @ 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 | d6d35b2efd04 |
children | 812ca80863d4 |
comparison
equal
deleted
inserted
replaced
880:342e3ea24b5d | 881:b4e10471e970 |
---|---|
23 | 23 |
24 self._pagebaker = PageBaker(self.app, | 24 self._pagebaker = PageBaker(self.app, |
25 self.ctx.out_dir, | 25 self.ctx.out_dir, |
26 force=self.ctx.force) | 26 force=self.ctx.force) |
27 self._pagebaker.startWriterQueue() | 27 self._pagebaker.startWriterQueue() |
28 | |
29 def createJobs(self, ctx): | |
30 used_paths = {} | |
31 for rec in ctx.record_histories.current.records: | |
32 src_name = rec.name.split('@')[0] | |
33 for e in rec.getEntries(): | |
34 paths = e.getAllOutputPaths() | |
35 if paths is not None: | |
36 for p in paths: | |
37 used_paths[p] = (src_name, e) | |
38 | |
39 jobs = [] | |
40 route = self.source.route | |
41 pretty_urls = self.app.config.get('site/pretty_urls') | |
42 record = ctx.record_histories.current.getRecord(self.record_name) | |
43 | |
44 for item in self.source.getAllContents(): | |
45 route_params = item.metadata['route_params'] | |
46 uri = route.getUri(route_params) | |
47 path = self._pagebaker.getOutputPath(uri, pretty_urls) | |
48 override = used_paths.get(path) | |
49 if override is not None: | |
50 override_source_name, override_entry = override | |
51 override_source = self.app.getSource(override_source_name) | |
52 if override_source.config['realm'] == \ | |
53 self.source.config['realm']: | |
54 logger.error( | |
55 "Page '%s' would get baked to '%s' " | |
56 "but is overriden by '%s'." % | |
57 (item.spec, path, override_entry.item_spec)) | |
58 else: | |
59 logger.debug( | |
60 "Page '%s' would get baked to '%s' " | |
61 "but is overriden by '%s'." % | |
62 (item.spec, path, override_entry.item_spec)) | |
63 | |
64 entry = PagePipelineRecordEntry() | |
65 entry.item_spec = item.spec | |
66 entry.flags |= PagePipelineRecordEntry.FLAG_OVERRIDEN | |
67 record.addEntry(entry) | |
68 | |
69 continue | |
70 | |
71 jobs.append(self.createJob(item)) | |
72 | |
73 if len(jobs) > 0: | |
74 return jobs | |
75 return None | |
28 | 76 |
29 def mergeRecordEntry(self, record_entry, ctx): | 77 def mergeRecordEntry(self, record_entry, ctx): |
30 existing = ctx.record.getEntry(record_entry.item_spec) | 78 existing = ctx.record.getEntry(record_entry.item_spec) |
31 existing.errors += record_entry.errors | 79 existing.errors += record_entry.errors |
32 existing.flags |= record_entry.flags | 80 existing.flags |= record_entry.flags |