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
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