ahmedraza

buy.py

Mar 16th, 2017
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.07 KB | None | 0 0
  1. @app.route("/buy", methods=["GET", "POST"])
  2. @login_required
  3. def buy():
  4.     """Buy shares of stock."""
  5.     if request.method == "POST":
  6.         #take symbol from user
  7.         symbl = request.form.get("symbol")
  8.         if not symbl:
  9.             return apology ("Must enter the symbol")
  10.         #Number of shares to buy    
  11.         num = request.form.get("number")
  12.         number = float (num)
  13.         if number is None or number == '' or number < 1:
  14.             return apology ("Please enter valid number of stocks to buy")
  15.        
  16.            
  17.         #Lookup and save dict in quoted    
  18.         quoted = lookup(symbl)
  19.         #If symbol is invalid return apology
  20.         if not quoted:
  21.             return apology ("Invalid stock")
  22.         else:
  23.             #qtd saves price of share
  24.             qtd = quoted["price"]
  25.             #price of single share * Number of sahres required to buy
  26.             prc = float(qtd) * number
  27.             #remember session id
  28.             ide = session["user_id"]
  29.            
  30.             csh = db.execute("SELECT * FROM users WHERE id = :ide", ide = ide)
  31.             #Only go forward if user have enough money
  32.             if prc <= csh[0]["cash"]:
  33.                 symb = db.execute ("select * from portfolio where id = :ii" , ii = ide)
  34.                 #If it is first trade of user
  35.                 if not symb:
  36.                     db.execute("INSERT INTO portfolio (id, symbol,price,shares) VALUES (:ide, :symbol, :price, :shares)", ide = ide,symbol = symbl, price = prc, shares = number)
  37.                     db.execute("UPDATE users SET cash = :cash WHERE id = :ide",cash = csh[0]["cash"] - prc, ide = ide)
  38.                 #If user has already bought some shares
  39.                 else:        
  40.                     #If user is buying that share again then just update portfolio
  41.                     if symb[0]["symbol"] == symbl :
  42.                         #symb = db.execute ("select shares from portfolio where id = :ii" , ii = ide)
  43.                         num =int (symb[0]["shares"]) + number
  44.                         db.execute("update portfolio set price = :price, shares = :shares  where id = :ide AND symbol = :smb", price = symb[0]["price"] + prc, ide = ide, shares = num,smb = symbl)
  45.                         db.execute("UPDATE users SET cash = :cash WHERE id = :ide",cash = csh[0]["cash"] - prc, ide = ide)
  46.                         return redirect(url_for("index"))
  47.                     else:
  48.                         #If user is buying that specific share first time then add it to portfolio
  49.                         db.execute("INSERT INTO portfolio (id, symbol,price,shares) VALUES (:ide, :symbol, :price,:shares)", ide = ide,symbol = symbl, price = prc, shares = number)
  50.                         db.execute("UPDATE users SET cash = :cash WHERE id = :ide",cash = csh[0]["cash"] - prc, ide = ide)
  51.                         #Go to index page
  52.                         return redirect(url_for("index"))
  53.             else:
  54.                 return apology ("You don't have enough cash to buy these stocks")
  55.     else:
  56.         return render_template("buy.html")
Add Comment
Please, Sign In to add comment