def get(self, user, location): """ Get all routes in specific location for user. """ # find the approriate user with the id db_user = User.query.filter_by(id=user).first() if db_user is None: return create_error_response( 404, "Not found", "User not found" ) # test if location is found for user db_location = Route.query.filter(Route.user==db_user).filter(Route.locationId==location).first() if db_location is None: return create_error_response( 404, "Not found", "No location was found with the id {}".format(location) ) # response body with proper controls body = RouteBuilder() body.add_namespace("locations", LINK_RELATIONS_URL) body.add_control("self", url_for("api.locationitem", user=user, location=location)) body.add_control_climbed_by(user) body.add_control_routes_all(user) body.add_control_locations_all(user) body["items"] = [] # get the routes in the specific location for db_route in Route.query.filter(Route.user==db_user).filter(Route.locationId==location).all(): item = RouteBuilder( date=db_route.date.isoformat(), location=db_route.location.name, discipline=db_route.discipline.name, grade=db_route.grade.name, extraInfo=db_route.extraInfo ) item.add_control("self", url_for("api.routeitem", user=user, route=db_route.id)) item.add_control_edit_route(user, db_route.id) item.add_control_delete_route(user, db_route.id) item.add_control_discipline_routes(user, db_route.disciplineId) item.add_control_grade_routes(user, db_route.gradeId) item.add_control("profile", ROUTE_PROFILE) body["items"].append(item) return Response(json.dumps(body), 200, mimetype=MASON)
def get(self, user): """ Get all unique locations for user. """ # find the approriate user with the id db_user = User.query.filter_by(id=user).first() if db_user is None: return create_error_response( 404, "Not found", "User not found" ) # response body with proper controls body = RouteBuilder() body.add_namespace("locations", LINK_RELATIONS_URL) body.add_control("self", url_for("api.locationcollection", user=user)) body.add_control_climbed_by(user) body.add_control_routes_all(user) body["items"] = [] # get the locations, and only return unique values for db_route in Route.query.filter_by(user=db_user).group_by(Route.locationId): item = RouteBuilder( location=db_route.location.name ) item.add_control("self", url_for("api.locationitem", user=user, location=db_route.locationId)) item.add_control_location_routes(user, db_route.locationId) item.add_control("profile", ROUTE_PROFILE) body["items"].append(item) return Response(json.dumps(body), 200, mimetype=MASON)
def get(self, user): """ Get all routes for user. """ # find the approriate user with the id db_user = User.query.filter_by(id=user).first() if db_user is None: return create_error_response(404, "Not found", "User not found") # response body with proper controls body = RouteBuilder() body.add_namespace("routes", LINK_RELATIONS_URL) body.add_control("self", url_for("api.routecollection", user=user)) body.add_control_climbed_by(user) body.add_control_routes_all(user) body.add_control_add_route(user) body.add_control_locations_all(user) body.add_control_disciplines_all(user) body.add_control_grades_all(user) body["items"] = [] # use user id to get the routes, and add them to list # functions even if there are no routes for db_route in Route.query.filter_by(user=db_user): item = RouteBuilder( date=db_route.date.isoformat(), # convert date to isoformat location=db_route.location.name, discipline=db_route.discipline.name, grade=db_route.grade.name, extraInfo=db_route.extraInfo) item.add_control( "self", url_for("api.routeitem", user=user, route=db_route.id)) item.add_control_edit_route(user, db_route.id) item.add_control_delete_route(user, db_route.id) item.add_control_location_routes(user, db_route.location.id) item.add_control_discipline_routes(user, db_route.discipline.id) item.add_control_grade_routes(user, db_route.grade.id) item.add_control("profile", ROUTE_PROFILE) body["items"].append(item) return Response(json.dumps(body), 200, mimetype=MASON)
def get(self, user, route): """ get information of specific route """ # test that user with the route exists db_user = User.query.filter_by(id=user).first() if db_user is None: return create_error_response(404, "Not found", "User not found") # test if route exists for this user db_route = Route.query.filter(Route.user == db_user).filter( Route.id == route).first() if db_route is None: return create_error_response( 404, "Not found", "No route was found with the id {}".format(route)) # response body with proper controls body = RouteBuilder(date=db_route.date.isoformat(), location=db_route.location.name, discipline=db_route.discipline.name, grade=db_route.grade.name, extraInfo=db_route.extraInfo) body.add_namespace("routes", LINK_RELATIONS_URL) body.add_control("self", url_for("api.routeitem", user=user, route=route)) body.add_control("profile", ROUTE_PROFILE) body.add_control_routes_all(user) body.add_control_climbed_by(user) body.add_control_edit_route(user, route) body.add_control_delete_route(user, route) body.add_control_location_routes(user, db_route.locationId) body.add_control_discipline_routes(user, db_route.disciplineId) body.add_control_grade_routes(user, db_route.gradeId) return Response(json.dumps(body), 200, mimetype=MASON)
def get(self, user): """ Get information of specific user """ # test if user exists db_user = User.query.filter_by(id=user).first() if db_user is None: return create_error_response( 404, "Not found", "User not found" ) # build response body body = RouteBuilder( email=db_user.email, firstName=db_user.firstName, lastName=db_user.lastName ) body.add_namespace("users", LINK_RELATIONS_URL) body.add_control("self", url_for("api.useritem", user=user)) body.add_control("profile", USER_PROFILE) body.add_control_climbed_by(user) body.add_control_all_users() body.add_control_edit_user(user) body.add_control_edit_user(user) body.add_control_delete_user(user) body.add_control_routes_all(user) return Response(json.dumps(body), 200, mimetype=MASON)
def get(self): """ Get all users. """ # response body with proper controls body = RouteBuilder() body.add_namespace("users", LINK_RELATIONS_URL) body.add_control("self", url_for("api.usercollection")) body.add_control_all_users() body.add_control_add_user() body["items"] = [] # create list of all users for db_user in User.query.all(): item = RouteBuilder( email=db_user.email, firstName=db_user.firstName, lastName=db_user.lastName ) item.add_control("self", url_for("api.useritem", user=db_user.id)) item.add_control("profile", USER_PROFILE) body["items"].append(item) return Response(json.dumps(body), 200, mimetype=MASON)