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