Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def buy():
- """Buy shares of stock."""
- if request.method == "POST":
- # перевіряємо чи передали символ і чи він є літерою
- if not request.form.get("symbol") or not request.form.get("symbol").isalpha:
- return apology("Missing symbol")
- # перевіряємо на біржі чи закріплене за введеним символом підприємство
- elif not lookup(request.form.get("symbol")):
- return apology("Your symbol \"{}\"".format(request.form.get("symbol")), "not in Stock")
- # перевіряємо чи ввів користувач кількість акцій, чи значення є числове і чи воно не менше за одиницю
- elif not request.form.get("share") or not request.form.get("share").isdigit() or int(request.form.get("share")) < 1:
- return apology("Missing share")
- else:
- # отримуємо повну інформацію про акції підприємство та ціну
- qoute = lookup(request.form.get("symbol"))
- cost = float(qoute["price"])
- result = db.execute("SELECT cash FROM users WHERE id = :id", id=session["user_id"])
- money = float(result[0]["cash"])
- # перевіряємо, ич достатньо у користувача грошей, щоб придбати певну кількість акцій
- if float(request.form.get("share")) * cost > money:
- return apology("You do not have so much money")
- else:
- shares_buy = int(request.form.get("share"))
- if not db.execute(
- "INSERT INTO shares (user_id, symbol, shares) VALUES (:user_id, :symbol, :shares)",
- user_id=session["user_id"], symbol=qoute["symbol"], shares=shares_buy
- ):
- issh = db.execute(
- "SELECT shares FROM shares WHERE user_id= :user_id AND symbol= :symbol",
- user_id=session["user_id"], symbol=qoute["symbol"]
- )
- db.execute(
- "UPDATE shares SET shares= :shares WHERE symbol= :symbol AND user_id= :user_id",
- shares=issh[0]["shares"] + shares_buy, symbol=qoute["symbol"], user_id=session["user_id"]
- )
- db.execute(
- "INSERT INTO history (user_id, symbol, shares, transactions, price) \
- VALUES(:user_id, :symbol, :shares, :transactions, :price)",
- user_id=session["user_id"], symbol=qoute["symbol"],
- shares=shares_buy, transactions='Buy', price=qoute["price"]
- )
- db.execute(
- "UPDATE users SET cash = :cash WHERE id = :id",
- cash=money - shares_buy * qoute["price"], id=session["user_id"]
- )
- flash("Congratulations!!! ")
- flash("You bought")
- flash(shares_buy)
- flash("shares of")
- flash(qoute["symbol"])
- return redirect("/")
- else:
- return render_template("buy.html")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement