changeset 1018:3c6e6e7b9639

bake: Fix totally broken page baking caused by previous commit.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 29 Nov 2017 21:35:49 -0800
parents 3c669bb9498e
children bd544b65cfad
files piecrust/baking/baker.py piecrust/pipelines/page.py
diffstat 2 files changed, 24 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/baking/baker.py	Wed Nov 29 20:41:09 2017 -0800
+++ b/piecrust/baking/baker.py	Wed Nov 29 21:35:49 2017 -0800
@@ -359,6 +359,7 @@
         # See if there's a next step to take.
         npj = res.get('next_step_job')
         if npj is not None:
+            npj['pass_num'] = cur_pass
             npj['step_num'] = cur_step + 1
             userdata.next_step_jobs[source_name].append(npj)
 
--- a/piecrust/pipelines/page.py	Wed Nov 29 20:41:09 2017 -0800
+++ b/piecrust/pipelines/page.py	Wed Nov 29 21:35:49 2017 -0800
@@ -64,6 +64,7 @@
         history = ctx.record_histories.getHistory(ctx.record_name).copy()
         history.build()
 
+        pass_num = ctx.pass_num
         record = ctx.current_record
         record.user_data['dirty_source_names'] = set()
 
@@ -98,7 +99,7 @@
                     logger.error(
                         "Page '%s' would get baked to '%s' "
                         "but is overriden by '%s'." %
-                        (enrty.item_spec, path, override_entry.item_spec))
+                        (cur.item_spec, path, override_entry.item_spec))
                 else:
                     logger.debug(
                         "Page '%s' would get baked to '%s' "
@@ -109,7 +110,8 @@
                 continue
 
             # Nope, all good, let's create a job for this item.
-            jobs.append(create_job(self, cur.item_spec))
+            jobs.append(create_job(self, cur.item_spec,
+                                   pass_num=pass_num))
 
         if len(jobs) > 0:
             return jobs
@@ -161,11 +163,12 @@
         return None
 
     def handleJobResult(self, result, ctx):
+        pass_num = ctx.pass_num
         step_num = ctx.step_num
 
-        if step_num == 0:
-            print(result)
+        if pass_num == 0:
             new_entry = self.createRecordEntry(result['item_spec'])
+            new_entry.flags = result['flags']
             new_entry.config = result['config']
             new_entry.route_params = result['route_params']
             new_entry.timestamp = result['timestamp']
@@ -180,19 +183,23 @@
     def run(self, job, ctx, result):
         pass_num = job.get('pass_num', 0)
         step_num = job.get('step_num', 0)
+
         if pass_num == 0:
             if step_num == 0:
-                self._loadPage(job, ctx, result)
+                return self._loadPage(job, ctx, result)
+
+        elif pass_num == 1:
+            if step_num == 0:
+                return self._renderOrPostpone(job, ctx, result)
             elif step_num == 1:
-                self._renderOrPostpone(job, ctx, result)
-            elif step_num == 2:
-                self._renderAlways(job, ctx, result)
-            else:
-                raise Exception("Unexpected pipeline step: %d" % step_num)
-        elif pass_num == 1:
-            self._renderAlways(job, ctx, result)
-        else:
-            raise Exception("Unexpected pipeline pass: %d" % pass_num)
+                return self._renderAlways(job, ctx, result)
+
+        elif pass_num == 2:
+            if step_num == 0:
+                return self._renderAlways(job, ctx, result)
+
+        raise Exception("Unexpected pipeline pass/step: %d/%d" %
+                        (pass_num, step_num))
 
     def getDeletions(self, ctx):
         for prev, cur in ctx.record_history.diffs:
@@ -216,20 +223,15 @@
         content_item = content_item_from_job(self, job)
         page = self.app.getPage(self.source, content_item)
 
-        trigger_next_job = True
         result['flags'] = PagePipelineRecordEntry.FLAG_NONE
         result['config'] = page.config.getAll()
-        result['route_params'] = item.metadata['route_params']
+        result['route_params'] = content_item.metadata['route_params']
         result['timestamp'] = page.datetime.timestamp()
 
         if page.was_modified:
             result['flags'] |= PagePipelineRecordEntry.FLAG_SOURCE_MODIFIED
         if page.config.get(self._draft_setting):
             result['flags'] |= PagePipelineRecordEntry.FLAG_IS_DRAFT
-            trigger_next_job = False
-
-        if trigger_next_job:
-            result['next_step_job'] = create_job(self, content_item.spec)
 
     def _renderOrPostpone(self, job, ctx, result):
         # Here our job is to render the page's segments so that they're
@@ -240,7 +242,7 @@
         logger.debug("Conditional render for: %s" % content_item.spec)
         page = self.app.getPage(self.source, content_item)
         if page.config.get(self._draft_setting):
-            return
+            raise Exception("Shouldn't have a draft page in a render job!")
 
         prev_entry = ctx.previous_entry