Refactor Vertex class to support dictionary of nodes
This commit is contained in:
parent
4481130845
commit
f497ecdeb9
1 changed files with 22 additions and 1 deletions
|
|
@ -313,7 +313,16 @@ class Vertex:
|
||||||
params[param_key] = []
|
params[param_key] = []
|
||||||
params[param_key].append(self.graph.get_vertex(edge.source_id))
|
params[param_key].append(self.graph.get_vertex(edge.source_id))
|
||||||
elif edge.target_id == self.id:
|
elif edge.target_id == self.id:
|
||||||
params[param_key] = self.graph.get_vertex(edge.source_id)
|
if isinstance(template_dict[param_key]["value"], dict):
|
||||||
|
# we don't know the key of the dict but we need to set the value
|
||||||
|
# to the vertex that is the source of the edge
|
||||||
|
param_dict = template_dict[param_key]["value"]
|
||||||
|
params[param_key] = {
|
||||||
|
key: self.graph.get_vertex(edge.source_id)
|
||||||
|
for key in param_dict.keys()
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
params[param_key] = self.graph.get_vertex(edge.source_id)
|
||||||
|
|
||||||
for key, value in template_dict.items():
|
for key, value in template_dict.items():
|
||||||
if key in params:
|
if key in params:
|
||||||
|
|
@ -493,9 +502,21 @@ class Vertex:
|
||||||
await self._build_node_and_update_params(key, value, user_id)
|
await self._build_node_and_update_params(key, value, user_id)
|
||||||
elif isinstance(value, list) and self._is_list_of_nodes(value):
|
elif isinstance(value, list) and self._is_list_of_nodes(value):
|
||||||
await self._build_list_of_nodes_and_update_params(key, value, user_id)
|
await self._build_list_of_nodes_and_update_params(key, value, user_id)
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
await self._build_dict_of_nodes_and_update_params(key, value, user_id)
|
||||||
elif key not in self.params or self.updated_raw_params:
|
elif key not in self.params or self.updated_raw_params:
|
||||||
self.params[key] = value
|
self.params[key] = value
|
||||||
|
|
||||||
|
async def _build_dict_of_nodes_and_update_params(
|
||||||
|
self, key, nodes: Dict[str, "Vertex"], user_id=None
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Iterates over a dictionary of nodes, builds each and updates the params dictionary.
|
||||||
|
"""
|
||||||
|
for sub_key, node in nodes.items():
|
||||||
|
built = await node.get_result(requester=self, user_id=user_id)
|
||||||
|
self.params[key][sub_key] = built
|
||||||
|
|
||||||
def _is_node(self, value):
|
def _is_node(self, value):
|
||||||
"""
|
"""
|
||||||
Checks if the provided value is an instance of Vertex.
|
Checks if the provided value is an instance of Vertex.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue