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
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
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])
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"})
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
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])