예제 #1
0
def add_item(data):
    item = Item()
    item.name = data['name']
    item.cat_id = data['cat_id']
    session.add(item)
    session.commit()
    session.close()
예제 #2
0
def updateItem():
    try:
        cart_id = request.json['cart_id']
        package_id = request.json['package_id']
        qty = request.json['quantity']

        # get cart
        cart = (ShoppingCart.query.filter_by(cart_id=cart_id)).first()
        # delete the cart item
        item_to_update = Item.query.filter_by(package_id=package_id).filter_by(cart_id=cart_id).first()
        if item_to_update:
            item_to_update.qty = qty
            db.session.add(item_to_update)
            cart.updated_time = datetime.now()
            db.session.commit()
            # get cart items
            cart_items = Item.query.filter_by(cart_id=cart_id).all()
            whole_cart = []
            for item in cart_items:
                i = Item(item.package_id, item.price, item.qty, item.package_name)
                cart.update(i)
            for k, v in cart.content.items():
                print(k, '->', v.to_json())
                whole_cart.append(v.to_json())
            cart.total = cart.get_total()
            response_object = {
                'status': 'success',
                'cartInfo': cart.to_json(),
                'cart_Items': whole_cart
            }
            return make_response(jsonify(response_object)), 200
        responseObject = {
            'status': 'success',
            'user_id': cart.user_id,
            'total_amount': cart.total
        }
        return make_response(jsonify(responseObject)), 200

    except Exception as e:
        print(e)
        responseObject = {
            'status': 'fail',
            'message': 'Something went wrong!'
        }
        return make_response(jsonify(responseObject)), 500
예제 #3
0
def getCartItems():
    try:
        try:
            # get cart_Id and return all items in cart!
            cart_id = request.json['cart_id']
            # get cartItems from Item table.
            cart = (ShoppingCart.query.filter_by(cart_id=cart_id)).first()
            cartItems = Item.query.filter_by(cart_id=cart_id).all()
        except Exception as e:
            # get user_id and return all items in an OPEN cart!
            user_id = request.json['user_id']
            # cart = (ShoppingCart.query.filter_by(user_id=user_id)).filter_by(cart_status="OPEN").first()
            cart = (ShoppingCart.query.filter_by(user_id=user_id, cart_status="OPEN")).first()
            if(cart is not None):
                cartItems = Item.query.filter_by(cart_id=cart.cart_id).all()
            else:
                responseObject = {
                    'status': 'fail',
                    'message': 'No OPEN cart found for this user'
                }
                return make_response(jsonify(responseObject)), 404

        userCartObject = []
        for each in cartItems:
            i = Item(each.package_id, each.price, each.qty, each.package_name)
            cart.update(i)
        for k, v in cart.content.items():
            print(k, '->', v.to_json())
            userCartObject.append(v.to_json())
        # return cartId if add to cart is success.
        cart.total = cart.get_total()
        responseObject = {
            'status': 'success',
            'cartInfo': cart.to_json(),
            'cart_Items': userCartObject
        }
        return make_response(jsonify(responseObject)), 200

    except Exception as e:
        print(e)
        responseObject = {
            'status': 'fail',
            'message': 'Something went wrong!'
        }
        return make_response(jsonify(responseObject)), 500
예제 #4
0
def deleteFromCart():
    try:
        # parse request -> get cart_id, package_id and quantity to be deleted.
        package_id = request.json['package_id']
        cart_id = request.json['cart_id']
        # get cart
        cart = (ShoppingCart.query.filter_by(cart_id=cart_id)).first()
        # delete the cart item
        item_to_delete = Item.query.filter_by(package_id=package_id).filter_by(
            cart_id=cart_id).first()
        if item_to_delete:
            db.session.delete(item_to_delete)
            cart.updated_time = datetime.now()
            db.session.commit()
            # get cart items
            cart_items = Item.query.filter_by(cart_id=cart_id).all()
            whole_cart = []
            for item in cart_items:
                i = Item(item.package_id, item.price, item.qty,
                         item.package_name)
                cart.update(i)
            for k, v in cart.content.items():
                print(k, '->', v.to_json())
                whole_cart.append(v.to_json())

            response_object = {
                'status': 'success',
                'cartInfo': cart.to_json(),
                'cart_Items': whole_cart
            }
            return make_response(jsonify(response_object)), 200

    except Exception as e:
        print(e)
        response_object = {
            'status': 'fail',
            'message': 'Delete Operation gone wrong!'
        }
    return make_response(jsonify(response_object)), 500
예제 #5
0
def addToCart():
    try:
        # parse request
        auth_header = request.headers.get('Authorization')
        if auth_header:
            auth_token = auth_header.split(" ")[1]
        post_data = request.get_json()
        user = request.json['user_id']
        package_id = request.json['package_id']
        count = request.json['qty']
        # try to get cart_id from request -> decides later to create a new cart or not.
        try:
            cart_id = request.json['cart_id']
        except KeyError:
            cart_id = -1
        # get all information about the item
        if ADVERTISE_API_OK:
            headers = {
                'Authorization': 'Bearer ' + auth_token,
                'Content-Type': 'application/json'
            }
            response = requests.get(url=ADVERTISE_URL + "/" + str(package_id),
                                    headers=headers)
            r = Product(response.json()['packages']["id"],
                        response.json()['packages']["package_name"],
                        response.json()['packages']["price"],
                        response.json()['packages']["available_qty"])
            print(r.to_json())
        else:
            r = Product(package_id, "p1", 100, 100)

        if count > int(r.qty):
            responseObject = {
                'status': 'fail',
                'message': 'Item requested is more than available quantity'
            }
            return jsonify(responseObject), 201
        else:
            # create the item object to be added to cart
            item = Item(package_id, r.price, count, r.name)
            itemToCommit = Item(package_id, r.price, count, r.name)

            if cart_id == -1:
                # create a new cart
                cart = ShoppingCart(user)
                cart.total = r.price
                cart.created_time = datetime.now()
                cart.payment_status = False
                cart.cart_status = 'OPEN'
                db.session.add(cart)
                db.session.commit()
                item.updateCartId(cart.cart_id)
                db.session.add(item)
                db.session.commit()

            else:
                # look into ShoppingCart db to get cart and use the same cart to add items
                cart = (ShoppingCart.query.filter_by(cart_id=cart_id)).first()
                # confirm if the cart is OPEN
                if cart.cart_status == 'OPEN':
                    # get cartItems from Item table.
                    cartItems = Item.query.filter_by(
                        cart_id=cart.cart_id).all()
                    for each in cartItems:
                        i = Item(each.package_id, each.price, each.qty,
                                 each.package_name)
                        cart.update(i)
                    # calculate cart total
                    cart.update(itemToCommit)
                    cart.total = cart.get_total()
                    cart.updated_time = datetime.now()
                    cart.payment_status = False
                    cart.cart_status = "OPEN"
                    db.session.add(cart)
                    db.session.commit()

                    # commit item to db first.
                    # commit item with respective cart_ids to database
                    itemToCommit.updateCartId(cart_id)
                    db.session.add(itemToCommit)
                    db.session.commit()

            # return cartId if add to cart is success.
            responseObject = {'status': 'success', 'cart_Info': cart.to_json()}
            return make_response(jsonify(responseObject)), 200
    except Exception as e:
        print(e)
        responseObject = {'status': 'fail', 'message': 'Something went wrong!'}
        return make_response(jsonify(responseObject)), 500
예제 #6
0
def load_game():
    """Loads the game spreadsheet with details of places and moves"""
    wb = load_workbook(filename="game_files/nasty_house.xlsx")
    start_place = None
    places = {}
    selects = {}
    sheet_names = wb.get_sheet_names()
    sheet = ""
    while sheet not in sheet_names:
        print("Please choose one of the following games:")

        for sheet_name in sheet_names:
            print(sheet_name)

        sheet=input("Please enter the name of the game you would like to play: ")
    sheet_ranges = wb.get_sheet_by_name(sheet)
    for row in sheet_ranges.iter_rows(row_offset = 0):
        command = row[0].value
        if command == "PLACE":
            place_id = row[1].value
            place_name = row[2].value
            place_description = row[3].value
            place_death = row[4].value == 1
            place_won = row[5].value == 1
            place = Place(place_name, place_description, place_death, place_won)
            if start_place is None:
                start_place = place
            places[place_id] = place
        elif command == "MOVE":
            direction = row[1].value
            start = row[2].value
            end = row[3].value
            places[start].add_place(Direction[direction] , places[end])
        elif command == "ITEM":
            item_name = row[1].value
            item_description = row[2].value
            place_found = places[row[3].value]
            place_used = places[row[4].value]
            destination = places[row[5].value]
            item = Item (item_name, item_description, place_found, place_used, destination)
            place_found.add_item(item)
        elif command == "SELECT":
            select_id = row[1].value
            select_place_id = row[2].value
            select_text = row[3].value
            select_place = places[select_place_id]
            select = Select(select_place, select_text)
            selects[select_id] = select
            select_place.add_select(select)
        elif command == "OPTION":
            select_id = row[1].value
            option_id = str(row[2].value)
            option_text = row[3].value
            option_destination_id = row[4].value
            option_destination = places[option_destination_id]
            option = Option(option_text, option_destination)
            select = selects[select_id]
            select.add_option(option_id, option)




    
    
    
    inventory = []
    return (start_place, inventory)