У меня продолжает появляться та же ошибка: «Покупка обрабатывает действительное приложение покупки, возникла исключительная ситуация (подробности см. В журнале)», и у меня нет ни малейшего понятия, что я должен изменить в своем коде, чтобы передать ошибку.
('Aandeel' - это голландский язык для акций).
Вот мой код:
def buy():
"""Buy shares of stock"""
# geldige invoer
if request.method == "POST":
# check voor geldige invoer
aandeel = lookup(request.form.get("symbol"))
if not aandeel:
return apology("Invalid input, please try again", 400)
# check voor geldige invoer
try:
shares = int(request.form.get("shares"))
if shares < 0:
return apology("Shares must be a positive integer", 400)
except:
return apology("Invalid input, please try again", 400)
if shares == None:
return apology("Invalid input, please try again", 400)
# hoeveelheid geld van user
geld = usd(db.execute("SELECT cash FROM users WHERE id = :id", id=session["user_id"]))
current_cash = usd(geld[0]["cash"])
# ga na of het voldoende geld is
if current_cash < usd(shares * aandeel["price"]):
return apology("Unfortunately, you don't have enough money", 400)
else:
# voer transactie in
db.execute("INSERT INTO transactions (id, symbol, shares, price, total, date_time) VALUES (:id, :symbol, :shares, :price, :total, DATETIME())",
id=session["user_id"], symbol=aandeel["symbol"], shares=shares, price=usd(aandeel["price"]), total=usd(aandeel["price"] * shares))
# update de cash van de user
db.execute("UPDATE users SET cash = cash - :purchase WHERE id:id;", \
purchase=usd(aandeel["price"] * shares), id=session["user_id"])
# Select user shares of that symbol
user_shares = db.execute("SELECT shares FROM portfolio \
WHERE id=:id AND symbol=:symbol", \
id=session["user_id"], symbol=aandeel["symbol"])
# ingeval aankoop aandeel dat user nog niet bezit
if not user_shares:
db.execute("INSERT INTO portfolio (id, symbol, shares, price, total) \
VALUES(id:, :symbol, :shares, :price, :total)", \
symbol=aandeel["symbol"], shares=shares, price=usd(aandeel["price"]), \
total=usd(shares * aandeel["price"]), id=session["user_id"])
# ingeval user al aandelen van dat bedrijf bezit
else:
shares_total = (user_shares[0]["shares"] + shares)
db.execute("UPDATE portfolio SET shares=:shares \
WHERE id=:id AND symbol=:symbol", \
shares=shares_total, id=session["user_id"], \
symbol=aandeel["symbol"])
return redirect("/", 400)
else:
return render_template("buy.html")
Трассировка: