flows/executor: call plan.next before pop so we can save plan
ReevaluateMarker: use PolicyEngine without cache
This commit is contained in:
parent
6a4086c490
commit
dab53cfd03
|
@ -36,6 +36,7 @@ class ReevaluateMarker(StageMarker):
|
||||||
def process(self, plan: "FlowPlan", stage: Stage) -> Optional[Stage]:
|
def process(self, plan: "FlowPlan", stage: Stage) -> Optional[Stage]:
|
||||||
"""Re-evaluate policies bound to stage, and if they fail, remove from plan"""
|
"""Re-evaluate policies bound to stage, and if they fail, remove from plan"""
|
||||||
engine = PolicyEngine(self.binding, self.user)
|
engine = PolicyEngine(self.binding, self.user)
|
||||||
|
engine.use_cache = False
|
||||||
engine.request.context = plan.context
|
engine.request.context = plan.context
|
||||||
engine.build()
|
engine.build()
|
||||||
result = engine.result
|
result = engine.result
|
||||||
|
|
|
@ -138,6 +138,10 @@ class FlowExecutorView(View):
|
||||||
stage_class=class_to_path(self.current_stage_view.__class__),
|
stage_class=class_to_path(self.current_stage_view.__class__),
|
||||||
flow_slug=self.flow.slug,
|
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.plan.pop()
|
||||||
self.request.session[SESSION_KEY_PLAN] = self.plan
|
self.request.session[SESSION_KEY_PLAN] = self.plan
|
||||||
if self.plan.stages:
|
if self.plan.stages:
|
||||||
|
|
Reference in New Issue