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