def ParseRobotRequest(robotId, body): """ Parse some JSON for robot updates """ result = TextToJson(body) if not IsOperationSuccess(result): return result rawData = result['rawData'] robotUpdates = {} if 'cells' in rawData and len(rawData['cells']) > 0: result = MapListToCellArray(rawData['cells']) if not IsOperationSuccess(result): return result robotUpdates['cells'] = result['cells'] if 'robot' in rawData: robot = RobotObject(robotId) inRobot = rawData['robot'] if 'position' in inRobot and len(inRobot['position']) > 0: result = MapListToCellArray(inRobot['position']) if not IsOperationSuccess(result): return result position = result['cells'][0] robot.position.x = position.coordinate.x robot.position.y = position.coordinate.y if 'exactPosition' in inRobot and len(inRobot['exactPosition']) > 0: result = MapListToCellArray(inRobot['exactPosition']) if not IsOperationSuccess(result): return result exactPosition = result['cells'][0] robot.exactPosition.x = exactPosition.coordinate.x robot.exactPosition.y = exactPosition.coordinate.y if 'waypoints' in inRobot and len(inRobot['waypoints']) > 0: result = MapListToCellArray(inRobot['waypoints']) if not IsOperationSuccess(result): return result robot.waypoints = [ cell.Dictify() for cell in result['cells'] ] robotUpdates['robot'] = robot if 'robot' not in robotUpdates and 'cells' not in robotUpdates: return BuildJsonResponse(False, 'Unable to parse any input data') response = BuildJsonResponse(True, 'Successfully parsed input data') response['result'] = robotUpdates return response
def MapRobotDBToRobotObj(robotDB, waypoints): """ Map a robot model object to a separate object for easier validation/printing """ robot = RobotObject(robotDB.pk) robot.position.x = robotDB.xPos robot.position.y = robotDB.yPos robot.exactPosition.x = robotDB.xExactPos robot.exactPosition.y = robotDB.yExactPos robot.instruction.x = robotDB.xTarget robot.instruction.y = robotDB.yTarget if waypoints is not None: robot.waypoints = [ [point.x, point.y] for point in waypoints ] return robot