コード例 #1
0
def checkout():
    current_id = User.get_by_id(get_jwt_identity())
    not_enough_items = Cart.select().join(Item).where(
        Cart.user == current_id, Cart.payment_status == False,
        Cart.amount > Item.stock)

    if len(not_enough_items) > 0:
        return jsonify("Message: There are not enough of these items in stock",
                       [{
                           "item": {
                               "id": item.item.id,
                               "stock": item.item.stock,
                               "color": item.item.color,
                               "name": item.item.name,
                               "product_type": item.item.product_type,
                               "image": item.item.image_url,
                               "price": item.item.price,
                               "size": item.item.size
                           }
                       } for item in not_enough_items], "Please reduce amount",
                       {"Status": "Failed"}), 400

    else:
        print(request.form.get('paymentMethodNonce'))
        data = request.get_json()
        amount_input = data['amount']
        pmNonce_input = data['paymentMethod']

        result = gateway.transaction.sale({
            "amount": amount_input,
            "payment_method_nonce": pmNonce_input,
            "options": {
                "submit_for_settlement": True
            }
        })

        Payment(user=current_id,
                Braintree_Transaction_id=result.transaction.id,
                Total_amount=result.transaction.amount).save()
        cart_amount = Cart.select(Cart.amount).where(Cart.item_id == Item.id)

        item = (Item.update(stock=Item.stock - cart_amount).where(
            Item.id.in_(
                Cart.select(
                    Cart.item_id).where((Cart.user == current_id)
                                        & (Cart.payment_status == False)))))
        item.execute()

        Cart.update(payment_status=True).where(
            Cart.user == current_id, Cart.payment_status == False).execute()

    print(result.transaction)
    print(result.transaction.id)
    print(result.transaction.amount)
    send_after_payment(current_id.email)

    return jsonify({'message': 'Success', 'status': 'success'}), 200
コード例 #2
0
def get_total_price_of_items(cart_id):
    try:
        # get instance of the specific cart that the user is
        user_cart_instances = (Cart.select().where(
            Cart.user_id == current_user.id))

        # convert them into dictionaries
        user_cart_instances_dicts = [
            model_to_dict(carts) for carts in user_cart_instances
        ]

        # get the prices
        price_list = []

        for cart in user_cart_instances_dicts:
            price_list.append(cart['product_id']['price'])

        # return success
        return jsonify(data=price_list,
                       status={
                           "code": 200,
                           "message": "Success getting all the carts"
                       }), 200

    except models.DoesNotExist:

        # return the error
        return jsonify(data={},
                       status={
                           "code": 401,
                           "messsage": "Error getting this resource"
                       }), 401
コード例 #3
0
ファイル: cart.py プロジェクト: SaefKamaruddin/padelle
def paid_item():
    current_id = User.get_by_id(get_jwt_identity())
    carts = Cart.select().where(Cart.user == current_id,
                                Cart.payment_status == True)
    return jsonify([{
        "user": {
            "id": cart.user.id,
            "username": cart.user.username
        },
        "cart": {
            "id": cart.id,
            "amount": cart.amount
        },
        "item": {
            "id": cart.item.id,
            "color": cart.item.color,
            "name": cart.item.name,
            "product_type": cart.item.product_type,
            "image": cart.item.image_url,
            "price": cart.item.price,
            "size": cart.item.size
        },
        "payment": {
            "id": cart.payment.id,
            "Braintree_id": cart.payment.Braintree_Transaction_id,
            "Total paid": cart.payment.Total_amount
        }
    } for cart in carts])
コード例 #4
0
def match():
    current_id = User.get_by_id(get_jwt_identity())
    # carts = Cart.select().where(
    #     Cart.user == current_id, Cart.payment_status == False)

    # Cart.update({Cart.item_id.stock: '20'}).where(Cart.select(Item.id).join(Item).where(
    #     Cart.user == current_id, Cart.payment_status == False)).execute()
    # Item.update(stock=20).where(Item.select().join(Cart).where(
    #     (Cart.user == current_id) & (Cart.payment_status == False))).execute()
    cart = Cart.select(Cart.amount).where(Cart.item_id == Item.id)

    item = (Item.update(stock=Item.stock - cart).where(
        Item.id.in_(
            Cart.select(
                Cart.item_id).where((Cart.user == current_id)
                                    & (Cart.payment_status == False)))))
    item.execute()
    return jsonify({"hello": "hello"})
コード例 #5
0
def show_cart():
    current_user = User.get_by_id(get_jwt_identity())

    if current_user:
        cart = Cart.select().where(Cart.user_id==current_user.id)
        results = []
        for c in cart:
            c_data = {
                "ingredient": c.ingredient.name,
                "quantity": c.quantity,
                "amount" : c.amount
            }
            results.append(c_data)
        return jsonify({ "data" : results})
    else:
        return error
コード例 #6
0
ファイル: cart.py プロジェクト: SaefKamaruddin/padelle
def get_by_name():
    current_id = User.get_by_id(get_jwt_identity())
    carts = Cart.select().where(Cart.user == current_id,
                                Cart.payment_status == False)
    return jsonify([{
        "user": {
            "id": cart.user.id,
            "username": cart.user.username
        },
        "cart": {
            "id": cart.id,
            "amount": cart.amount
        },
        "item": {
            "id": cart.item.id,
            "color": cart.item.color,
            "name": cart.item.name,
            "product_type": cart.item.product_type,
            "image": cart.item.image_url,
            "price": cart.item.price,
            "size": cart.item.size
        }
    } for cart in carts])