flows: fix two stages being removed when reevaluate_marker was enabled
This commit is contained in:
parent
2be6cd70d9
commit
7e9d7e5198
|
@ -46,24 +46,22 @@ class FlowPlan:
|
|||
self.stages.append(stage)
|
||||
self.markers.append(marker or StageMarker())
|
||||
|
||||
def next(self) -> Optional[Stage]:
|
||||
def next(self, offset = 0) -> Optional[Stage]:
|
||||
"""Return next pending stage from the bottom of the list"""
|
||||
if not self.has_stages:
|
||||
return None
|
||||
stage = self.stages[0]
|
||||
marker = self.markers[0]
|
||||
stage = self.stages[offset]
|
||||
marker = self.markers[offset]
|
||||
|
||||
if marker.__class__ is not StageMarker:
|
||||
LOGGER.debug("f(plan_inst): stage has marker", stage=stage, marker=marker)
|
||||
marked_stage = marker.process(self, stage)
|
||||
if not marked_stage:
|
||||
LOGGER.debug("f(plan_inst): marker returned none, next stage", stage=stage)
|
||||
self.stages.remove(stage)
|
||||
self.markers.remove(marker)
|
||||
if not self.has_stages:
|
||||
return None
|
||||
# pylint: disable=not-callable
|
||||
return self.next()
|
||||
return self.next(offset + 1)
|
||||
return marked_stage
|
||||
|
||||
def pop(self):
|
||||
|
|
|
@ -157,10 +157,6 @@ class FlowExecutorView(View):
|
|||
stage_class=class_to_path(self.current_stage_view.__class__),
|
||||
flow_slug=self.flow.slug,
|
||||
)
|
||||
# We call plan.next here to check for re-evaluate markers
|
||||
# this is important so we can save the result
|
||||
# and we don't have to re-evaluate the policies each request
|
||||
self.plan.next()
|
||||
self.plan.pop()
|
||||
self.request.session[SESSION_KEY_PLAN] = self.plan
|
||||
if self.plan.stages:
|
||||
|
|
Reference in New Issue