comparison piecrust/processing/base.py @ 39:2f717f961996

Better error reporting and cache validation. Fix the processor pipeline in the preview server. Move the `pages` route to first position.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 21 Aug 2014 22:28:22 -0700
parents 485682a6de50
children 45828c4167ad
comparison
equal deleted inserted replaced
38:091f99bfbe44 39:2f717f961996
113 return entry 113 return entry
114 return None 114 return None
115 115
116 116
117 class ProcessorPipelineRecordEntry(object): 117 class ProcessorPipelineRecordEntry(object):
118 def __init__(self, rel_input, is_processed=False, is_overridden=False): 118 def __init__(self, base_dir, rel_input, is_processed=False,
119 is_overridden=False):
120 self.base_dir = base_dir
119 self.rel_input = rel_input 121 self.rel_input = rel_input
120 self.rel_outputs = [] 122 self.rel_outputs = []
121 self.is_processed = is_processed 123 self.is_processed = is_processed
122 self.is_overridden = is_overridden 124 self.is_overridden = is_overridden
125
126 @property
127 def path(self):
128 return os.path.join(self.base_dir, self.rel_input)
123 129
124 130
125 class ProcessingContext(object): 131 class ProcessingContext(object):
126 def __init__(self, base_dir, job_queue, record=None): 132 def __init__(self, base_dir, job_queue, record=None):
127 self.base_dir = base_dir 133 self.base_dir = base_dir
282 288
283 # Figure out if a previously processed file is overriding this one. 289 # Figure out if a previously processed file is overriding this one.
284 # This can happen if a theme file (processed via a mount point) 290 # This can happen if a theme file (processed via a mount point)
285 # is overridden in the user's website. 291 # is overridden in the user's website.
286 if record.hasOverrideEntry(rel_path): 292 if record.hasOverrideEntry(rel_path):
287 record.addEntry(ProcessorPipelineRecordEntry(rel_path, 293 record.addEntry(ProcessorPipelineRecordEntry(
294 job.base_dir, rel_path,
288 is_processed=False, is_overridden=True)) 295 is_processed=False, is_overridden=True))
289 logger.info(format_timed(start_time, 296 logger.info(format_timed(start_time,
290 '%s [not baked, overridden]' % rel_path)) 297 '%s [not baked, overridden]' % rel_path))
291 return 298 return
292 299
293 builder = ProcessingTreeBuilder(pipeline.processors) 300 builder = ProcessingTreeBuilder(pipeline.processors)
294 tree_root = builder.build(rel_path) 301 tree_root = builder.build(rel_path)
295 print_node(tree_root, recursive=True) 302 print_node(tree_root, recursive=True)
296 leaves = tree_root.getLeaves() 303 leaves = tree_root.getLeaves()
297 fi = ProcessorPipelineRecordEntry(rel_path) 304 fi = ProcessorPipelineRecordEntry(job.base_dir, rel_path)
298 fi.rel_outputs = [l.path for l in leaves] 305 fi.rel_outputs = [l.path for l in leaves]
299 record.addEntry(fi) 306 record.addEntry(fi)
300 307
301 force = pipeline.force 308 force = pipeline.force
302 if not force: 309 if not force: