Beispiel #1
0
def show(food_name):
    # food_name = request.json.get('food_name')
    all_of_that_food = Food.select().where(Food.name == food_name)

    if len(all_of_that_food) != 0:
        food_id_arr = [food.id for food in all_of_that_food]
        food_name_arr = [food.name for food in all_of_that_food]
        food_price_arr = [str(food.price) for food in all_of_that_food]
        food_latitude_arr = [food.latitude for food in all_of_that_food]
        food_longitude_arr = [food.longitude for food in all_of_that_food]
        criterion_z1_list = []
        criterion_z2_list = []
        criterion_z3_list = []
        criterion_z4_list = []
        criterion_z5_list = []
        average_c1 = []
        average_c2 = []
        average_c3 = []
        average_c4 = []
        average_c5 = []
        first_review_food_pic = []

        for food_id_element in food_id_arr:
            criterion_z1_list.append([
                e.criterion_z1 for e in Review.select().join(
                    Food, on=(Food.id == Review.food_id)).where(
                        Food.id == food_id_element)
            ])
            criterion_z2_list.append([
                e.criterion_z2 for e in Review.select().join(
                    Food, on=(Food.id == Review.food_id)).where(
                        Food.id == food_id_element)
            ])
            criterion_z3_list.append([
                e.criterion_z3 for e in Review.select().join(
                    Food, on=(Food.id == Review.food_id)).where(
                        Food.id == food_id_element)
            ])
            criterion_z4_list.append([
                e.criterion_z4 for e in Review.select().join(
                    Food, on=(Food.id == Review.food_id)).where(
                        Food.id == food_id_element)
            ])
            criterion_z5_list.append([
                e.criterion_z5 for e in Review.select().join(
                    Food, on=(Food.id == Review.food_id)).where(
                        Food.id == food_id_element)
            ])
            first_review_food_pic.append(S3_LOCATION + [
                e.food_picture for e in Review.select().join(
                    Food, on=(Food.id == Review.food_id)).where(
                        Food.id == food_id_element)
            ][0])

        for criterion in criterion_z1_list:
            average_c1.append(floor(sum(criterion) / len(criterion)))
        for criterion in criterion_z2_list:
            average_c2.append(floor(sum(criterion) / len(criterion)))
        for criterion in criterion_z3_list:
            average_c3.append(floor(sum(criterion) / len(criterion)))
        for criterion in criterion_z4_list:
            average_c4.append(floor(sum(criterion) / len(criterion)))
        for criterion in criterion_z5_list:
            average_c5.append(floor(sum(criterion) / len(criterion)))

        return jsonify({
            # "all_of_that_food": all_of_that_food
            "food_id_arr": food_id_arr,
            "food_name_arr": food_name_arr,
            "food_price_arr": food_price_arr,
            "food_latitude_arr": food_latitude_arr,
            "food_longitude_arr": food_longitude_arr,
            "criterion_z1_list": criterion_z1_list,
            "criterion_z2_list": criterion_z2_list,
            "criterion_z3_list": criterion_z3_list,
            "criterion_z4_list": criterion_z4_list,
            "criterion_z5_list": criterion_z5_list,
            "average_c1": average_c1,
            "average_c2": average_c2,
            "average_c3": average_c3,
            "average_c4": average_c4,
            "average_c5": average_c5,
            "first_review_food_pic": first_review_food_pic
        })
    else:
        return jsonify({"err": "Food dish does not exist"}), 400
Beispiel #2
0
def create():

    logged_in_user_id = request.form.get('user_id')
    food_name = request.form.get('food_name')
    criterion_z1 = int(request.form.get('criterion_z1'))
    criterion_z2 = int(request.form.get('criterion_z2'))
    criterion_z3 = int(request.form.get('criterion_z3'))
    criterion_z4 = int(request.form.get('criterion_z4'))
    criterion_z5 = int(request.form.get('criterion_z5'))
    food_picture = request.files['food_picture']
    latitude = float(request.form.get('latitude'))
    longitude = float(request.form.get('longitude'))
    price = float(request.form.get('price'))

    # logged_in_user_id = request.json.get("user_id")
    # food_name = request.json.get('food_name')
    # criterion_z1 = request.json.get('criterion_z1')
    # criterion_z2 = request.json.get('criterion_z2')
    # criterion_z3 = request.json.get('criterion_z3')
    # criterion_z4 = request.json.get('criterion_z4')
    # criterion_z5 = request.json.get('criterion_z5')
    # food_picture = request.json.get('food_picture')
    # latitude = request.json.get('latitude')
    # longitude = request.json.get('longitude')
    # price = request.json.get('price')
    # tag_list = request.json.get('tag_list')

    food_already_exist = Food.select().where(
        Food.name == food_name, Food.latitude > latitude - 0.0002,
        Food.latitude < latitude + 0.0002, Food.longitude > longitude - 0.0002,
        Food.longitude < longitude + 0.0002)

    # print(food_already_exist, "FOOD ALREADY EXIST OBJECT")
    food_already_exist_id_arr = [
        food_already_exist_element.id
        for food_already_exist_element in food_already_exist
    ]

    # print(food_already_exist_id_arr, "FOOD ALREADY EXIST ARRAY")
    # print(food_already_exist_id_arr[0], "FIRST INDEX FOOD ALREADY EXIST")
    if food_already_exist:

        review_already_exist = Review.get_or_none(
            user_id=logged_in_user_id, food_id=food_already_exist_id_arr[0])
        # print(review_already_exist, "REVIEW ALREADY EXIST")

        if review_already_exist:
            print("HELLO WORLD I WENT IN ")
            return jsonify({
                "status":
                "failed",
                "message":
                "You have already submitted a review for this dish in this location"
            }), 400
        else:
            print("I AM CREATING A REVIEW INSTANCE")
            new_review_instance = Review(user_id=logged_in_user_id,
                                         food_picture=food_picture,
                                         criterion_z1=criterion_z1,
                                         criterion_z2=criterion_z2,
                                         criterion_z3=criterion_z3,
                                         criterion_z4=criterion_z4,
                                         criterion_z5=criterion_z5,
                                         food_id=food_already_exist_id_arr[0])
            if new_review_instance.save():
                file = request.files['food_picture']
                if file and allowed_file(file.filename):
                    file.filename = secure_filename(file.filename)
                    output = upload_file_to_s3(file, S3_BUCKET_NAME)
                    food_picture = str(output)
                    new_review_instance = Review(
                        user_id=logged_in_user_id,
                        food_picture=food_picture,
                        criterion_z1=criterion_z1,
                        criterion_z2=criterion_z2,
                        criterion_z3=criterion_z3,
                        criterion_z4=criterion_z4,
                        criterion_z5=criterion_z5,
                        food_id=food_already_exist_id_arr[0])
                    if new_review_instance.save():
                        # Creation of tag
                        # for tag_element in tag_list:
                        #     tag_already_exist = Tag.get_or_none(name = tag_element)
                        #     if tag_already_exist:
                        #         new_tag_review_instance = TagReview(review_id = new_review_instance.id, tag_id = tag_already_exist.id)
                        #         new_tag_review_instance.save()
                        #     else:
                        #         new_tag_instance = Tag(name = tag_element)
                        #         new_tag_instance.save()
                        #         new_tag_instance_id = Tag.get_or_none(name = tag_element).id
                        #         new_tag_review_instance = TagReview(review_id = new_review_instance.id, tag_id = new_tag_instance_id)
                        #         new_tag_review_instance.save()
                        # if food image upload success
                        return jsonify({
                            "logged_in_user_id": logged_in_user_id,
                            "food_picture": food_picture,
                            "criterion_z1": criterion_z1,
                            "criterion_z2": criterion_z2,
                            "criterion_z3": criterion_z3,
                            "criterion_z4": criterion_z4,
                            "criterion_z5": criterion_z5,
                            "food_id": food_already_exist.id,
                            "price": price,
                            "latitude": latitude,
                            "longitude": longitude
                            # "tag_list": tag_list
                        }), 200
                    else:
                        # if jsonify error
                        return jsonify({"err": "Something went wrong"}), 400
                else:
                    return jsonify({"err": "Something went wrong"}), 400
                    # if image fail to upload
    else:
        new_food_instance = Food(name=food_name,
                                 longitude=longitude,
                                 latitude=latitude,
                                 price=price)
        if new_food_instance.save():
            print(food_picture)
            # print(food_picture.files)
            file = request.files['food_picture']
            print(file.filename)
            if file and allowed_file(file.filename):
                file.filename = secure_filename(file.filename)
                output = upload_file_to_s3(file, S3_BUCKET_NAME)
                food_picture = str(output)

                # print(food_name,"NAME OF FOOD")

                # print(latitude, "LATTITUDE")
                # print(longitude, "LONGITUDE")
                # print(type(latitude), "LATITUDE TYPE OF")
                # print(type(longitude), "LONTITUDE TYPE OF")

                latitude = str(latitude)
                longitude = str(longitude)
                # print(latitude, "LATTITUDE 2")
                # print(longitude, "LONGITUDE 2")

                # print(type(latitude), "LATITUDE TYPE OF 2")
                # print(type(longitude), "LONTITUDE TYPE OF 2")

                new_food_instance = Food.get_or_none(name=food_name,
                                                     longitude=longitude,
                                                     latitude=latitude)
                # print(new_food_instance, "REVIEW INSTANCE")
                # print(new_food_instance.id, "REVIEW INSTANCE ID")
                new_review_instance = Review(user_id=logged_in_user_id,
                                             food_picture=food_picture,
                                             criterion_z1=criterion_z1,
                                             criterion_z2=criterion_z2,
                                             criterion_z3=criterion_z3,
                                             criterion_z4=criterion_z4,
                                             criterion_z5=criterion_z5,
                                             food_id=new_food_instance.id)
                if new_review_instance.save():
                    # Creation of tag
                    # for tag_element in tag_list:
                    #     tag_already_exist = Tag.get_or_none(name = tag_element)
                    #     if tag_already_exist:
                    #         new_tag_review_instance = TagReview(review_id = new_review_instance.id, tag_id = tag_already_exist.id)
                    #         new_tag_review_instance.save()
                    #     else:
                    #         new_tag_instance = Tag(name = tag_element)
                    #         new_tag_instance.save()
                    #         new_tag_instance_id = Tag.get_or_none(name = tag_element).id
                    #         new_tag_review_instance = TagReview(review_id = new_review_instance.id, tag_id = new_tag_instance_id)
                    #         new_tag_review_instance.save()
                    # if food image upload success
                    return jsonify({
                        "logged_in_user_id": logged_in_user_id,
                        "food_picture": food_picture,
                        "criterion_z1": criterion_z1,
                        "criterion_z2": criterion_z2,
                        "criterion_z3": criterion_z3,
                        "criterion_z4": criterion_z4,
                        "criterion_z5": criterion_z5,
                        "food_id": new_food_instance.id,
                        "price": price,
                        "latitude": float(latitude),
                        "longitude": float(longitude)
                        # "tag_list": tag_list
                    }), 200
                else:
                    # if jsonify error
                    return jsonify({"err": "Something went wrong"}), 400
            else:
                return jsonify({"err": "Something went wrong"}), 400
                # if image fail to upload
        else:
            return jsonify({"err": "Something went wrong"}), 400