示例#1
0
    def patch(self, item_id):
        json_data = request.get_json()
        current_user = get_jwt_identity()
        data, errors = rating_schema.load(data=json_data, partial=("name", ))
        item = Item.get_by_id(item_id=item_id)

        if errors:
            return {
                "message": "Validation errors",
                "errors": errors
            }, HTTPStatus.BAD_REQUEST

        if item is None:
            return item_not_found()

        if current_user != item.user_id:
            return {"message": "Access not allowed"}, HTTPStatus.FORBIDDEN

        rating = Rating.get_by_user_item(user_id=current_user, item_id=item.id)

        rating.rating = data.get("rating") or rating.rating
        rating.rating_text = data.get("rating_text") or rating.rating_text

        rating.save()

        update_ratings(item_id=item.id)

        return rating_schema.dump(rating).data, HTTPStatus.OK
示例#2
0
    def post(self, item_id):
        json_data = request.get_json()
        current_user = get_jwt_identity()
        data, errors = rating_schema.load(data=json_data)
        item = Item.get_by_id(item_id=item_id)

        if errors:
            return {
                "message": "Validation errors",
                "errors": errors
            }, HTTPStatus.BAD_REQUEST

        if Rating.get_by_user_item(user_id=current_user,
                                   item_id=item.id) is not None:
            return {"message": "You have already rated this item"}

        rating = Rating(**data)
        rating.user_id = current_user
        rating.item_id = item.id
        rating.save()

        update_ratings(item_id=item.id)

        return rating_schema.dump(rating).data, HTTPStatus.CREATED