Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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)
Exemple #6
0
 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)