from core.apirequest import executeRequest from core.runtime.runtimecontract import buildRuntimeAttr, buildPreRuntimeAttr def buildAction (action, outputs): if hasattr(action, "recursive"): recursiveresponses = [] items = outputs[action.recursive["source"]] reverse = action.recursive.get("reverse", False) if reverse: items = reversed(items) for item in items: outputs[action.recursive["label"]] = item outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs) if match: continue response, outputs = executeRequest(action, outputs, resolved) recursiveresponses.append(response) outputs, response = buildRuntimeAttr(action, outputs, resolved, response) return outputs, recursiveresponses, match, filter else: outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs) if match: return outputs, resolved, match, filter response, outputs = executeRequest(action, outputs, resolved) outputs, response = buildRuntimeAttr(action, outputs, resolved, response) return outputs, response, match, filter