Guest User

buy function

a guest
Apr 23rd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. @app.route("/buy", methods=["GET", "POST"])
  2. @login_required
  3. def buy():
  4. if request.method =="POST":
  5. # use lookup to verify the stock
  6. stock = lookup(request.form.get("stock"))
  7. if not stock:
  8. return apology("The stock you entered does not exist.", 403)
  9. # check if shares are valid integers
  10. try:
  11. shares = int(request.form.get("shares"))
  12. if shares <= 0:
  13. return apology("Enter a positive number", 403)
  14. except ValueError:
  15. return apology("Enter a positive number", 403)
  16. # check if user has enough cash
  17. # db.execute returns a list of dictionaries which needs to be accessed and then comapared
  18. cash = db.execute("SELECT * FROM users WHERE id = :id", \
  19. id = session["user_id"])
  20. if cash[0]["cash"] < (shares * float(stock["price"])) or not cash:
  21. return apology("You don't have enough money")
  22. else:
  23. # add to database in portfolio
  24. db.execute("INSERT INTO portfolio (user_id, symbol, shares, price) VALUES(:user_id, :symbol, :shares, :price)", \
  25. user_id = session["user_id"], symbol = request.form.get("stock"), shares = request.form.get("shares"), price = shares*float(stock["price"]))
  26.  
  27. # update cash in users table UPDATE users SET cash = cash - 50 WHERE id = :id
  28. db.execute("UPDATE users SET cash = cash - :purchase WHERE id = :id", \
  29. id = session["user_id"], purchase = shares*float(stock["price"]))
  30.  
  31. # redirect to portfolio page
  32. return redirect("/")
  33.  
  34.  
  35. else:
  36. return render_template("buy.html")
Add Comment
Please, Sign In to add comment