diff --git a/core/execution/action/action.py b/core/execution/action/action.py index f284dcf..88d8ab4 100644 --- a/core/execution/action/action.py +++ b/core/execution/action/action.py @@ -4,34 +4,34 @@ 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) + #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) + # for item in items: + # outputs[action.recursive["label"]] = item + # outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs) - if match: - continue + # if match: + # continue - response, outputs = executeRequest(action, outputs, resolved) - recursiveresponses.append(response) - outputs, response = buildRuntimeAttr(action, outputs, resolved, response) + # response, outputs = executeRequest(action, outputs, resolved) + # recursiveresponses.append(response) + # outputs, response = buildRuntimeAttr(action, outputs, resolved, response) - return outputs, recursiveresponses + # return outputs, recursiveresponses - else: - outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs) + #else: + outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs) - if match: - return outputs, resolved - - response, outputs = executeRequest(action, outputs, resolved) - outputs, response = buildRuntimeAttr(action, outputs, resolved, response) + if match: + return outputs, resolved + + response, outputs = executeRequest(action, outputs, resolved) + outputs, response = buildRuntimeAttr(action, outputs, resolved, response) return outputs, response diff --git a/core/execution/executioncontract.py b/core/execution/executioncontract.py index e795889..d3f700f 100644 --- a/core/execution/executioncontract.py +++ b/core/execution/executioncontract.py @@ -2,9 +2,11 @@ from core.execution.action import buildAction from core.execution.operation import buildOperation from core.execution.monitor import buildMonitor from core.runtime import manageFailure +from core.execution.recursive import buildRecursive def executeContract(module, outputs): - + #print("DEBUGGING") + #print(module.name) if module.kind == "operation": outputs, responses = buildOperation(module, outputs) @@ -22,5 +24,10 @@ def executeContract(module, outputs): return outputs, response + elif module.kind == "recursiveset": + outputs, response = buildRecursive(module, outputs) + + return outputs, response + #except Exception as error: #outputs = manageFailure(error, module) \ No newline at end of file diff --git a/core/execution/operation/operation.py b/core/execution/operation/operation.py index 89e73ac..888f9c5 100644 --- a/core/execution/operation/operation.py +++ b/core/execution/operation/operation.py @@ -1,23 +1,29 @@ import logging from core.runtime.managefailure import manageFailure from core.execution.action.action import buildAction -from core.runtime.skipstep import skipStep -from core.runtime.recursive import recursiveSet +#from core.runtime.skipstep import skipStep +#from core.runtime.recursive import recursiveSet outputs = {} def buildOperation(definition, outputs): + from core.execution.executioncontract import executeContract actions = definition.actions responses = [] for action in actions: - if action == "recursiveset": - outputs, responses = recursiveSet(definition, outputs, responses) + #if action == "recursiveset": + #if hasattr(action, "recursiveset"): + # from core.runtime.recursive import recursiveSet + # outputs, responses = recursiveSet(action, outputs, responses) - else: - outputs, response = buildAction(action, outputs) + #else: + #outputs, response = buildAction(action, outputs) + outputs, response = executeContract(action, outputs) + + #if hasattr(action, recursive) - responses.append(response) + responses.append(response) #except Exception as error: diff --git a/core/execution/recursive.py b/core/execution/recursive.py new file mode 100644 index 0000000..b0d1e30 --- /dev/null +++ b/core/execution/recursive.py @@ -0,0 +1,45 @@ +from core.execution.action.action import buildAction +from core.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr +from core.apirequest import executeRequest + +#def recursiveSet(definition, outputs, responses): +# from core.execution.executioncontract import executeContract +# recursiveset = definition.recursiveset["actions"] +# for item in outputs[definition.recursiveset["source"]]: +# outputs[definition.recursiveset["outputlabel"]] = item +# +# for job in recursiveset: +# #outputs, response = buildAction(job, outputs) +# outputs, response = executeContract(job, outputs) +# responses.append(response) +# +# return outputs, responses + +def buildRecursive(definition, outputs): + responses = [] + from core.execution.executioncontract import executeContract + recursiveset = definition.recursiveset["actions"] + + source = definition.recursiveset["source"] + + items = outputs.get(source) + + if items is None: + print(f"No items available in {source} for {definition.name}") + return outputs, None + + reverse = definition.recursiveset.get("reverse", False) + + if reverse: + #print("reversing") + items = reversed(items) + + for item in items: + outputs[definition.recursiveset["outputlabel"]] = item + + for job in recursiveset: + #outputs, response = buildAction(job, outputs) + outputs, response = executeContract(job, outputs) + responses.append(response) + + return outputs, responses diff --git a/core/runtime/recursive.py b/core/runtime/recursive.OUTDATED similarity index 82% rename from core/runtime/recursive.py rename to core/runtime/recursive.OUTDATED index 5d08762..20b3d65 100644 --- a/core/runtime/recursive.py +++ b/core/runtime/recursive.OUTDATED @@ -1,14 +1,17 @@ from core.execution.action.action import buildAction from core.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr from core.apirequest import executeRequest +#from core.execution.executioncontract import executeContract def recursiveSet(definition, outputs, responses): + from core.execution.executioncontract import executeContract recursiveset = definition.recursiveset["actions"] for item in outputs[definition.recursiveset["source"]]: outputs[definition.recursiveset["outputlabel"]] = item for job in recursiveset: - outputs, response = buildAction(job, outputs) + #outputs, response = buildAction(job, outputs) + outputs, response = executeContract(job, outputs) responses.append(response) return outputs, responses diff --git a/core/runtime/recursiveactions.py b/core/runtime/recursiveactions.OUDATED similarity index 100% rename from core/runtime/recursiveactions.py rename to core/runtime/recursiveactions.OUDATED diff --git a/core/server/createlistener.py b/core/server/createlistener.py index 0990443..c797fcd 100644 --- a/core/server/createlistener.py +++ b/core/server/createlistener.py @@ -2,6 +2,7 @@ import json from core.runtime.outputs import buildOutput from core.runtime.applyconditions import applyConditions from core.execution.operation import buildOperation +from core.execution.executioncontract import executeContract def buildListener(listener, self): @@ -39,7 +40,7 @@ def buildListener(listener, self): print(item) #Process and forward to RMASS - outputs, responses = buildOperation(listener.execute, outputs) + outputs, responses = executeContract(listener.execute, outputs) continue diff --git a/plugins/rmass/actions/synapsepushmessages.py b/plugins/rmass/actions/synapsepushmessages.py index c2ccefe..7c6762d 100644 --- a/plugins/rmass/actions/synapsepushmessages.py +++ b/plugins/rmass/actions/synapsepushmessages.py @@ -6,11 +6,11 @@ kind = "action" showstatus = True -recursive = { - "source": "getmessage_select", - "reverse": True, - "label": "messageitem", -} +#recursive = { +# "source": "getmessage_select", +# "reverse": True, +# "label": "messageitem", +#} resolve = { "get": { diff --git a/plugins/rmass/operations/synapsemessagepush.py b/plugins/rmass/operations/synapsemessagepush.py index d23512d..d5ed48c 100644 --- a/plugins/rmass/operations/synapsemessagepush.py +++ b/plugins/rmass/operations/synapsemessagepush.py @@ -1,4 +1,6 @@ -from plugins.rmass.actions import pullmessagelist, refresh_tokens, getmessage, synapseregister, synapseassignusername, getrmassuseravatar, rmassavatartosynapse, synapseassignavatar, synapsecreatespace, synapsegetspaceid, synapsecreatedmroom, synapseassigndmavatar, synapsegetroomid, synapseassignspace, synapsepushmessages +from plugins.rmass.actions import pullmessagelist, refresh_tokens, getmessage, synapseregister, synapseassignusername, getrmassuseravatar, rmassavatartosynapse, synapseassignavatar, synapsecreatespace, synapsegetspaceid, synapsecreatedmroom, synapseassigndmavatar, synapsegetroomid, synapseassignspace#, synapsepushmessages +from plugins.rmass.operations import getrmassconversations, synapsepushmessages + name = "Get Message List" @@ -7,26 +9,26 @@ kind = "operation" actions = [ refresh_tokens, pullmessagelist, - #Recursiveset is used to reference a nested operation inside an operation whose actions are listed in the recursiveset action list - "recursiveset", + getrmassconversations, + synapsepushmessages, ] -recursiveset = { - "source": "pullmessages_select", - "outputlabel": "messageheaders", - "actions": [ - synapseregister, - synapseassignusername, - getrmassuseravatar, - rmassavatartosynapse, - synapseassignavatar, - getmessage, +#recursiveset = { +# "source": "pullmessages_select", +# "outputlabel": "messageheaders", +# "actions": [ +# synapseregister, +# synapseassignusername, +# getrmassuseravatar, +# rmassavatartosynapse, +# synapseassignavatar, +# getmessage, #synapsecreatespace, #synapsegetspaceid, - synapsecreatedmroom, - synapsegetroomid, - synapseassigndmavatar, +# synapsecreatedmroom, +# synapsegetroomid, +# synapseassigndmavatar, #synapseassignspace, - synapsepushmessages, - ], -} +# synapsepushmessages, +# ], +#} diff --git a/plugins/rmass/operations/synapsepushmessages.py b/plugins/rmass/operations/synapsepushmessages.py new file mode 100644 index 0000000..4c0fd5b --- /dev/null +++ b/plugins/rmass/operations/synapsepushmessages.py @@ -0,0 +1,14 @@ +from plugins.rmass.actions import synapsepushmessages + +kind = "recursiveset" + +name = "Synapse Message Push Recursive Set" + +recursiveset = { + "source": "getmessage_select", + "reverse": True, + "outputlabel": "messageitem", + "actions": [ + synapsepushmessages, + ], +} \ No newline at end of file