modifications to support optional geo position edits for nodes and to account for geo updates to sdt
This commit is contained in:
parent
9535d40b70
commit
ff3b20a962
6 changed files with 51 additions and 22 deletions
|
@ -475,9 +475,10 @@ class CoreGrpcClient:
|
|||
self,
|
||||
session_id: int,
|
||||
node_id: int,
|
||||
position: core_pb2.Position,
|
||||
position: core_pb2.Position = None,
|
||||
icon: str = None,
|
||||
source: str = None,
|
||||
geo: core_pb2.Geo = None,
|
||||
) -> core_pb2.EditNodeResponse:
|
||||
"""
|
||||
Edit a node, currently only changes position.
|
||||
|
@ -487,6 +488,7 @@ class CoreGrpcClient:
|
|||
:param position: position to set node to
|
||||
:param icon: path to icon for gui to use for node
|
||||
:param source: application source editing node
|
||||
:param geo: lon,lat,alt location for node
|
||||
:return: response with result of success or failure
|
||||
:raises grpc.RpcError: when session or node doesn't exist
|
||||
"""
|
||||
|
@ -496,6 +498,7 @@ class CoreGrpcClient:
|
|||
position=position,
|
||||
icon=icon,
|
||||
source=source,
|
||||
geo=geo,
|
||||
)
|
||||
return self.stub.EditNode(request)
|
||||
|
||||
|
|
|
@ -44,7 +44,9 @@ def add_node_data(node_proto: core_pb2.Node) -> Tuple[NodeTypes, int, NodeOption
|
|||
|
||||
position = node_proto.position
|
||||
options.set_position(position.x, position.y)
|
||||
options.set_location(position.lat, position.lon, position.alt)
|
||||
if node_proto.HasField("geo"):
|
||||
geo = node_proto.geo
|
||||
options.set_location(geo.lat, geo.lon, geo.alt)
|
||||
return _type, _id, options
|
||||
|
||||
|
||||
|
|
|
@ -688,21 +688,26 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
|||
node = self.get_node(session, request.node_id, context)
|
||||
options = NodeOptions()
|
||||
options.icon = request.icon
|
||||
x = request.position.x
|
||||
y = request.position.y
|
||||
options.set_position(x, y)
|
||||
lat = request.position.lat
|
||||
lon = request.position.lon
|
||||
alt = request.position.alt
|
||||
options.set_location(lat, lon, alt)
|
||||
if request.HasField("position"):
|
||||
x = request.position.x
|
||||
y = request.position.y
|
||||
options.set_position(x, y)
|
||||
lat, lon, alt = None, None, None
|
||||
has_geo = request.HasField("geo")
|
||||
if has_geo:
|
||||
lat = request.geo.lat
|
||||
lon = request.geo.lon
|
||||
alt = request.geo.alt
|
||||
options.set_location(lat, lon, alt)
|
||||
result = True
|
||||
try:
|
||||
session.edit_node(node.id, options)
|
||||
source = None
|
||||
if request.source:
|
||||
source = request.source
|
||||
node_data = node.data(0, source=source)
|
||||
session.broadcast_node(node_data)
|
||||
if not has_geo:
|
||||
node_data = node.data(0, source=source)
|
||||
session.broadcast_node(node_data)
|
||||
except CoreError:
|
||||
result = False
|
||||
return core_pb2.EditNodeResponse(result=result)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue