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