Mercurial > piecrust2
comparison piecrust/pipelines/base.py @ 876:d1095774bfcf
refactor: Fix some issues with record/cache entry collisions, add counters.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 15 Jun 2017 07:33:40 -0700 |
parents | 448710d84121 |
children | d6d35b2efd04 |
comparison
equal
deleted
inserted
replaced
875:7169bf42ec60 | 876:d1095774bfcf |
---|---|
51 | 51 |
52 | 52 |
53 class PipelineJobRunContext: | 53 class PipelineJobRunContext: |
54 """ Context for running pipeline baking jobs. | 54 """ Context for running pipeline baking jobs. |
55 """ | 55 """ |
56 def __init__(self, job, pipeline, record_histories): | 56 def __init__(self, job, record_name, record_histories): |
57 self.job = job | |
58 self.record_name = record_name | |
57 self.record_histories = record_histories | 59 self.record_histories = record_histories |
58 self._job_item_spec = job.content_item.spec | 60 |
59 self._record_name = pipeline.record_name | 61 @property |
62 def content_item(self): | |
63 return self.job.content_item | |
60 | 64 |
61 @cached_property | 65 @cached_property |
62 def previous_record(self): | 66 def previous_record(self): |
63 return self.record_histories.getPreviousRecord(self._record_name) | 67 return self.record_histories.getPreviousRecord(self.record_name) |
68 | |
69 @cached_property | |
70 def record_entry_spec(self): | |
71 content_item = self.content_item | |
72 return content_item.metadata.get('record_entry_spec', | |
73 content_item.spec) | |
64 | 74 |
65 @cached_property | 75 @cached_property |
66 def previous_entry(self): | 76 def previous_entry(self): |
67 return self.previous_record.getEntry(self._job_item_spec) | 77 return self.previous_record.getEntry(self.record_entry_spec) |
68 | 78 |
69 | 79 |
70 class PipelineJobResult: | 80 class PipelineJobResult: |
71 """ Result of running a pipeline on a content item. | 81 """ Result of running a pipeline on a content item. |
72 """ | 82 """ |
132 for item in self.source.getAllContents()] | 142 for item in self.source.getAllContents()] |
133 | 143 |
134 def createJob(self, content_item): | 144 def createJob(self, content_item): |
135 return PipelineJob(self, content_item) | 145 return PipelineJob(self, content_item) |
136 | 146 |
137 def createRecordEntry(self, job): | 147 def createRecordEntry(self, job, ctx): |
138 entry_class = self.RECORD_ENTRY_CLASS | 148 entry_class = self.RECORD_ENTRY_CLASS |
139 record_entry = entry_class() | 149 record_entry = entry_class() |
140 record_entry.item_spec = job.content_item.spec | 150 record_entry.item_spec = ctx.record_entry_spec |
141 return record_entry | 151 return record_entry |
142 | 152 |
143 def mergeRecordEntry(self, record_entry, ctx): | 153 def mergeRecordEntry(self, record_entry, ctx): |
144 raise NotImplementedError() | 154 raise NotImplementedError() |
145 | 155 |