From 62f3128144172d3e5a8c4c5e77633583ed9684f9 Mon Sep 17 00:00:00 2001 From: davebshow <davebshow@gmail.com> Date: Wed, 9 Nov 2016 12:26:19 -0500 Subject: [PATCH] provided a tinkergraph/dse compatible solution --- goblin/session.py | 28 +++++++++++++++++++++------- tests/test_properties.py | 2 +- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/goblin/session.py b/goblin/session.py index b2aa5ee..ba7220b 100644 --- a/goblin/session.py +++ b/goblin/session.py @@ -282,7 +282,10 @@ class Session(connection.AbstractConnection): :param goblin.element.Edge edge: Element to be removed """ - traversal = self._g.E(Binding('eid', edge.id)).drop() + eid = edge.id + if isinstance(eid, dict): + eid = Binding('eid', edge.id) + traversal = self._g.E(eid).drop() result = await self._simple_traversal(traversal, edge) hashable_id = self._get_hashable_id(edge.id) edge = self.current.pop(hashable_id) @@ -359,9 +362,12 @@ class Session(connection.AbstractConnection): :returns: :py:class:`Edge<goblin.element.Edge>` | None """ - result = await self.g.E(Binding('eid', edge.id)).oneOrNone() + eid = edge.id + if isinstance(eid, dict): + eid = Binding('eid', edge.id) + return await self.g.E(eid).oneOrNone() + - return result async def update_vertex(self, vertex): """ @@ -384,7 +390,10 @@ class Session(connection.AbstractConnection): :returns: :py:class:`Edge<goblin.element.Edge>` object """ props = mapper.map_props_to_db(edge, edge.__mapping__) - traversal = self._g.E(Binding('eid', edge.id)) + eid = edge.id + if isinstance(eid, dict): + eid = Binding('eid', edge.id) + traversal = self._g.E(eid) return await self._update_edge_properties(edge, traversal, props) # Transaction support @@ -454,8 +463,10 @@ class Session(connection.AbstractConnection): async def _check_edge(self, edge): """Used to check for existence, does not update session edge""" - msg = await self._g.E(Binding('eid', edge.id)).oneOrNone() - return msg + eid = edge.id + if isinstance(eid, dict): + eid = Binding('eid', edge.id) + return await self._g.E(eid).oneOrNone() async def _update_vertex_properties(self, vertex, traversal, props): traversal, removals, metaprops = self._add_properties(traversal, props) @@ -473,8 +484,11 @@ class Session(connection.AbstractConnection): async def _update_edge_properties(self, edge, traversal, props): traversal, removals, _ = self._add_properties(traversal, props) + eid = edge.id + if isinstance(eid, dict): + eid = Binding('eid', edge.id) for k in removals: - await self._g.E(Binding('eid', edge.id)).properties(k).drop().oneOrNone() + await self._g.E(eid).properties(k).drop().oneOrNone() return await self._simple_traversal(traversal, edge) async def _add_metaprops(self, result, metaprops): diff --git a/tests/test_properties.py b/tests/test_properties.py index 55e5032..d532cb3 100644 --- a/tests/test_properties.py +++ b/tests/test_properties.py @@ -18,7 +18,7 @@ import pytest from goblin import element, exception, manager, properties -from gremlin_python.structure.io.graphson import long +from gremlin_python.statics import long def test_set_change_property(person, lives_in): -- GitLab