def setBuyAmount(user, stockSymbol, amount): user.updateSelfFunds() user.updateSelfBuyTriggers() user.updateSelfStocks() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_BUY_AMOUNT", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "") if float(user.funds) - float(amount) <= 0: print(str(user.instruction.transactionNumber) + " ERROR: Not enough funds") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_AMOUNT", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: Not enough funds", "") return 0 if stockSymbol in user.buyTriggers: amountStock = user.buyTriggers[stockSymbol] else: amountStock = StockClass.AmountStock(user.username, stockSymbol, user.instruction.transactionNumber, 0, False, False) if not stockSymbol in user.stocks: userStock = StockClass.UserStock(user.username, stockSymbol, 0) user.stocks[stockSymbol] = userStock amountStock["value"] = float(amountStock["value"]) + float(amount) amountStock["timestamp"] = calendar.timegm(time.gmtime()) amountStock["transactionNumber"] = user.instruction.transactionNumber user.buyTriggers[stockSymbol] = amountStock user.funds = float(user.funds) - float(amount) dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_AMOUNT", user.instruction.transactionNumber, "SET_BUY_AMOUNT", user.username, user.funds, "", "", "", "", "", "") user.updateDbUserStocks() user.updateDbUserBuyTriggers() user.updateDbFunds() return 0
def quote(user, quoteCache, stockSymbol): quoteManager = QuoteClass.Quotes() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "QUOTE", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "") q = quoteManager.hitQuote(quoteCache, user.username, stockSymbol, user.instruction.transactionNumber) return 0
def commitSell(user): user.updateSelfFunds() user.updateSelfSellStack() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_SELL", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "", "") if (len(user.sellStack) <= 0): print(str(user.instruction.transactionNumber) + " ERROR: No stocks to be commited to sell") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "COMMIT_SELL", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "ERROR: No stocks to be commited to sell", "") return 0 s = user.sellStack.pop() if calendar.timegm(time.gmtime()) - s["timestamp"] >= 59: print(str(user.instruction.transactionNumber) + " ERROR: Expired stock quote") return 0 user.funds = user.funds + s["value"] dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_SELL", user.instruction.transactionNumber, "COMMIT_SELL", user.username, user.funds, "", "", "", "", "", "") user.updateDbUserSellStack() user.updateDbFunds() return 0
def setSellAmount(user, stockSymbol, amount): user.updateSelfSellTriggers() user.updateSelfStocks() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_SELL_AMOUNT", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "") if not stockSymbol in user.stocks: print(str(user.instruction.transactionNumber) + " ERROR: Not enough specified stock") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_AMOUNT", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Not enough specified stock", "") return 0 if stockSymbol in user.sellTriggers: amountStock = user.sellTriggers[stockSymbol] else: amountStock = StockClass.AmountStock(user.username, stockSymbol, user.instruction.transactionNumber, 0, False, False) amountStock["value"] = float(amountStock["value"]) + float(amount) amountStock["timestamp"] = calendar.timegm(time.gmtime()) amountStock["transactionNumber"] = user.instruction.transactionNumber user.sellTriggers[stockSymbol] = amountStock user.updateDbUserStocks() user.updateDbUserSellTriggers() setSellTrigger(user, stockSymbol, amountStock["trigger"]) return 0
def cancelSetBuy(user, stockSymbol): user.updateSelfFunds() user.updateSelfBuyTriggers() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_SET_BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "") if not stockSymbol in user.buyTriggers: print(str(user.instruction.transactionNumber) + " ERROR: No trigger set") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SET_BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: No trigger set", "") return 0 amountStock = user.buyTriggers[stockSymbol] user.funds = user.funds + amountStock["value"] amountStock["value"] = False amountStock["trigger"] = False amountStock["timestamp"] = calendar.timegm(time.gmtime()) amountStock["transactionNumber"] = user.instruction.transactionNumber user.buyTriggers[stockSymbol] = amountStock dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SET_BUY", user.instruction.transactionNumber, "CANCEL_SET_BUY", user.username, user.funds, "", "", "", "", "", "") user.updateDbUserBuyTriggers() user.updateDbFunds() return 0
def cancelSetSell(user, stockSymbol): user.updateSelfStocks() user.updateSelfSellTriggers() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_SET_SELL", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "") if not stockSymbol in user.sellTriggers: print(str(user.instruction.transactionNumber) + " ERROR: No trigger set") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SET_SELL", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: No trigger set", "") return 0 amountStock = user.sellTriggers[stockSymbol] userStock = user.stocks[stockSymbol] if float(amountStock["trigger"]) <= 0: return 0 refundStockQuantity = int(float(amountStock["value"]) / float(amountStock["trigger"])) userStock["quantity"] = int(userStock["quantity"]) + refundStockQuantity amountStock["value"] = False amountStock["trigger"] = False amountStock["timestamp"] = calendar.timegm(time.gmtime()) amountStock["transactionNumber"] = user.instruction.transactionNumber user.stocks[stockSymbol] = userStock user.sellTriggers[stockSymbol] = amountStock user.updateDbUserSellTriggers() user.updateDbUserStocks() return 0
def commitBuy(user): user.updateSelfBuyStack() user.updateSelfStocks() dbm = dbManager.DBM() if (len(user.buyStack) <= 0): print(str(user.instruction.transactionNumber) + " ERROR: No stocks to be commited to buy") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_BUY", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "ERROR: No stocks to be commited to buy", "") return 0 s = user.buyStack.pop() if calendar.timegm(time.gmtime()) - s["timestamp"] >= 59: print(str(user.instruction.transactionNumber) + " ERROR: Expired stock quote") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_BUY", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "ERROR: Expired stock quote", "") return 0 dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_BUY", user.instruction.transactionNumber, "", user.username, "", s["stockSymbol"], "", "", "", "", "") if s["stockSymbol"] in user.stocks: user.stocks[s["stockSymbol"]]["quantity"] = user.stocks[s["stockSymbol"]]["quantity"] + s["quantity"] else: userStock = StockClass.UserStock(user.username, s["stockSymbol"], s["quantity"]) user.stocks[s["stockSymbol"]] = userStock user.updateDbUserStocks() user.updateDbUserBuyStack() return 0
def buy(user, quoteCache, stockSymbol, amount): user.updateSelfFunds() user.updateSelfBuyStack() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "") quoteManager = QuoteClass.Quotes() q = quoteManager.getQuote(quoteCache, user.username, stockSymbol) if calendar.timegm(time.gmtime()) - int(q.timestamp) >= 59: q = quoteManager.hitQuote(quoteCache, user.username, stockSymbol, user.instruction.transactionNumber) stockQuantity = int(float(amount) / float(q.quote)) stockValue = int(stockQuantity * float(q.quote)) if (user.funds - stockValue < 0): print(str(user.instruction.transactionNumber) + " ERROR: Not enough funds to buy") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: Not enough funds to buy", "") return 0 user.funds = user.funds - stockValue s = StockClass.Stock(user.username, stockSymbol, stockValue, stockQuantity, q.quote, q.timestamp) user.buyStack.append(s) dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "BUY", user.instruction.transactionNumber, "BUY", user.username, user.funds, stockSymbol, "", "", "", "", "") user.updateDbFunds() user.updateDbUserBuyStack() return 0
def updateSelfSellTriggers(self): dbm = dbManager.DBM() userSellTriggers = dbm.getUserSellTriggers(self.username) if userSellTriggers == None: self.sellTriggers = {} else: self.sellTriggers = userSellTriggers["sellTriggers"] return 0
def updateSelfSellStack(self): dbm = dbManager.DBM() userSellStack = dbm.getUserSellStack(self.username) if userSellStack == None: self.sellStack = [] else: self.sellStack = userSellStack["sellStack"] return 0
def updateSelfStocks(self): dbm = dbManager.DBM() userStocks = dbm.getUserStocks(self.username) if userStocks == None: self.stocks = {} else: self.stocks = userStocks["stocks"] return 0
def updateSelfFunds(self): dbm = dbManager.DBM() userInfo = dbm.getUserInfo(self.username) if userInfo == None: self.funds = 0 else: self.funds = userInfo["funds"] return 0
def add(user, amount): user.updateSelfFunds() user.funds = float(user.funds) + float(amount) result = user.updateDbFunds() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "ADD", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "", "") dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans1", "ADD", user.instruction.transactionNumber, "ADD", user.username, user.funds, "", "", "", "", "", "") if result: return 0 else: return 1
def sellTrigger(quoteCache): dbm = dbManager.DBM() quotes = QuoteClass.Quotes() while (True): for userRow in dbm.getAllSellTriggers(): username = userRow["username"] sellTriggers = userRow["sellTriggers"] for stockSymbol, sellTrigger in sellTriggers.items(): if float(sellTrigger["value"] ) <= 0 or sellTrigger["value"] == False: continue if float(sellTrigger["trigger"] ) <= 0 or sellTrigger["trigger"] == False: continue q = quotes.hitQuote(quoteCache, username, sellTrigger["stockSymbol"], sellTrigger["transactionNumber"]) if float(q.quote) <= float(sellTrigger["trigger"]): continue fakeStockQuantityToSell = int( float(sellTrigger["value"]) / float(sellTrigger["trigger"])) stockQuantityToSell = int( float(sellTrigger["value"]) / float(q.quote)) change = fakeStockQuantityToSell - stockQuantityToSell stockValueToSell = float(stockQuantityToSell) * float(q.quote) dbm.log("systemEvent", calendar.timegm(time.gmtime()), "", "sellTrigger", "SET_SELL_TRIGGER", sellTrigger["transactionNumber"], "", username, "", sellTrigger["stockSymbol"], "", "", "", "", "") dbm.updateUserFundsSpecific(username, stockValueToSell) dbm.updateUserStockSpecific(username, sellTrigger["stockSymbol"], change) dbm.updateUserSellTriggerSpecific(username, sellTrigger["stockSymbol"]) time.sleep(59)
def cancelSell(user): user.updateSelfSellStack() user.updateSelfStocks() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_SELL", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "", "") if (len(user.sellStack) <= 0): print(str(user.instruction.transactionNumber) + " ERROR: No sells to cancel") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SELL", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "ERROR: No sells to cancel", "") return 0 s = user.sellStack.pop() user.stocks[s["stockSymbol"]]["quantity"] = user.stocks[s["stockSymbol"]]["quantity"] + s["quantity"] user.updateDbUserStocks() user.updateDbUserSellStack() return 0
def setSellTrigger(user, stockSymbol, amount): user.updateSelfSellTriggers() user.updateSelfStocks() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "") if not stockSymbol in user.sellTriggers: print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "") return 0 amountStock = user.sellTriggers[stockSymbol] if amountStock["value"] <= 0: print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "") return 0 if float(amount) <= 0: return 0 amountStock["trigger"] = float(amount) amountStock["transactionNumber"] = user.instruction.transactionNumber fakeStockQuantityToSell = int( float(amountStock["value"]) / float(amountStock["trigger"]) ) userStock = user.stocks[stockSymbol] if userStock["quantity"] - fakeStockQuantityToSell <= 0: print(str(user.instruction.transactionNumber) + " ERROR: Not enough stock") amountStock["trigger"] = False amountStock["value"] = False dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Not enough stock", "") return 0 userStock["quantity"] = userStock["quantity"] - fakeStockQuantityToSell amountStock["timestamp"] = calendar.timegm(time.gmtime()) user.sellTriggers[stockSymbol] = amountStock user.stocks[stockSymbol] = userStock user.updateDbUserStocks() user.updateDbUserSellTriggers() return 0
def buyTrigger(quoteCache): dbm = dbManager.DBM() quotes = QuoteClass.Quotes() while (True): for userRow in dbm.getAllBuyTriggers(): username = userRow["username"] buyTriggers = userRow["buyTriggers"] for stockSymbol, buyTrigger in buyTriggers.items(): if float(buyTrigger["value"] ) <= 0 or buyTrigger["value"] == False: continue if float(buyTrigger["trigger"] ) <= 0 or buyTrigger["trigger"] == False: continue q = quotes.hitQuote(quoteCache, username, buyTrigger["stockSymbol"], buyTrigger["transactionNumber"]) if float(q.quote) >= float(buyTrigger["trigger"]): continue stockQuantityToBuy = int( float(buyTrigger["value"]) / float(q.quote)) stockValueToBuy = float(stockQuantityToBuy) * float(q.quote) change = float(buyTrigger["value"]) - stockValueToBuy dbm.log("systemEvent", calendar.timegm(time.gmtime()), "", "buyTrigger", "SET_BUY_TRIGGER", buyTrigger["transactionNumber"], "", username, "", buyTrigger["stockSymbol"], "", "", "", "", "") dbm.updateUserFundsSpecific(username, change) dbm.updateUserStockSpecific(username, buyTrigger["stockSymbol"], stockQuantityToBuy) dbm.updateUserBuyTriggerSpecific(username, buyTrigger["stockSymbol"]) time.sleep(59)
def cancelBuy(user): user.updateSelfFunds() user.updateSelfBuyStack() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_BUY", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "", "") if (len(user.buyStack) <= 0): print(str(user.instruction.transactionNumber) + " ERROR: No stocks to cancel") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_BUY", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "ERROR: No stocks to cancel", "") return 0 s = user.buyStack.pop() user.funds = user.funds + s["value"] dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_BUY", user.instruction.transactionNumber, "CANCEL_BUY", user.username, user.funds, "", "", "", "", "", ) user.updateDbUserBuyStack() user.updateDbFunds() return 0
def sell(user, quoteCache, stockSymbol, amount): user.updateSelfFunds() user.updateSelfSellStack() user.updateSelfStocks() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "") quoteManager = QuoteClass.Quotes() q = quoteManager.getQuote(quoteCache, user.username, stockSymbol) if calendar.timegm(time.gmtime()) - int(q.timestamp) >= 59: q = quoteManager.hitQuote(quoteCache, user.username, stockSymbol, user.instruction.transactionNumber) if not stockSymbol in user.stocks: print(str(user.instruction.transactionNumber) + " ERROR: User doesn't have stock") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: User doesn't have stock", "") return 0 stockQuantity = int(float(amount) / float(q.quote)) stockValue = int(stockQuantity * float(q.quote)) if user.stocks[stockSymbol]["quantity"] - stockQuantity <= 0: print(str(user.instruction.transactionNumber) + " ERROR: User doesn't have enough stock amount") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: User doesn't have enough stock amount", "") return 0 user.stocks[stockSymbol]["quantity"] = user.stocks[stockSymbol]["quantity"] - stockQuantity s = StockClass.Stock(user.username, stockSymbol, stockValue, stockQuantity, q.quote, q.timestamp) user.sellStack.append(s) dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "") user.updateDbUserStocks() user.updateDbUserSellStack() user.updateDbFunds() return 0
def displaySummary(user): dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans", "DISPLAY_SUMMARY", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "", "") logResults = dbm.getLogs(user.username) user.updateSelfFunds() user.updateSelfStocks() user.updateSelfBuyStack() user.updateSelfSellStack() user.updateSelfBuyTriggers() user.updateSelfSellTriggers() if testing: import json someObj = { "username": user.username, "funds": user.funds, "stocks": user.stocks, "buyStack": user.buyStack, "sellStack": user.sellStack, "buyTriggers": user.buyTriggers, "sellTriggers": user.sellTriggers, } return json.dumps(someObj) else: import json someObj = { "username": user.username, "funds": user.funds, "stocks": user.stocks, "buyStack": user.buyStack, "sellStack": user.sellStack, "buyTriggers": user.buyTriggers, "sellTriggers": user.sellTriggers, "logs": logResults } return json.dumps(someObj)
def setBuyTrigger(user, stockSymbol, amount): user.updateSelfBuyTriggers() dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_BUY_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "") if not stockSymbol in user.buyTriggers: print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "") return 0 amountStock = user.buyTriggers[stockSymbol] if amountStock["value"] <= 0: print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first") dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "") return 0 amountStock["trigger"] = amount amountStock["transactionNumber"] = user.instruction.transactionNumber user.buyTriggers[stockSymbol] = amountStock user.updateDbUserBuyTriggers() return 0
def dumplog(filename, username, transactionNumber): dbm = dbManager.DBM() dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans", "DUMPLOG", transactionNumber, "", username, "", "", "", "", filename, "", "") dbm.exportLog(filename, username) return 0
def hitQuote(self, quoteCache, userid, stockSymbol, transactionNumber): dbm = dbManager.DBM() dummy = True if dummy == True: if stockSymbol in quoteCache: quote = quoteCache[stockSymbol] if calendar.timegm(time.gmtime()) - int(quote.timestamp) >= 59: time.sleep(1) if testing: newQuote = Quote(10.00, stockSymbol, userid, 9999999999, "abcdefghijklmnopqrstuvwxyz") else: newQuote = Quote(10.00, stockSymbol, userid, calendar.timegm(time.gmtime()), "abcdefghijklmnopqrstuvwxyz") quoteCache[stockSymbol] = newQuote dbm.log("quoteServer", calendar.timegm(time.gmtime()), newQuote.timestamp, "trans1", "QUOTE", transactionNumber, "", newQuote.userid, "", stockSymbol, newQuote.quote, newQuote.cryptokey, "", "", "") return newQuote else: dbm.log("quoteServer", calendar.timegm(time.gmtime()), quote.timestamp, "trans1", "QUOTE", transactionNumber, "", quote.userid, "", stockSymbol, quote.quote, quote.cryptokey, "", "", "") return quote else: time.sleep(2) if testing: newQuote = Quote(10.00, stockSymbol, userid, 9999999999, "abcdefghijklmnopqrstuvwxyz") else: newQuote = Quote(10.00, stockSymbol, userid, calendar.timegm(time.gmtime()), "abcdefghijklmnopqrstuvwxyz") quoteCache[stockSymbol] = newQuote dbm.log("quoteServer", calendar.timegm(time.gmtime()), newQuote.timestamp, "trans1", "QUOTE", transactionNumber, "", newQuote.userid, "", stockSymbol, newQuote.quote, newQuote.cryptokey, "", "", "") return newQuote else: if stockSymbol in quoteCache: quote = quoteCache[stockSymbol] if (calendar.timegm(time.gmtime()) - int(quote.timestamp) <= 59): dbm.log("systemEvent", calendar.timegm(time.gmtime()), quote.timestamp, "trans1", "QUOTE", transactionNumber, "", quote.userid, "", stockSymbol, quote.quote, quote.cryptokey, "", "", "") return quote host = "quoteserve.seng.uvic.ca" port = 4449 sendMessage = stockSymbol + "," + userid + "\r" sendMessage = sendMessage.encode() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) s.send(sendMessage) receiveMessage = s.recv(1024).decode() resp = receiveMessage.split(",") newQuote = Quote(resp[0], resp[1], resp[2], int(resp[3]), resp[4].split("\n")[0]) quoteCache[stockSymbol] = newQuote dbm.log("quoteServer", calendar.timegm(time.gmtime()), newQuote.timestamp, "trans1", "QUOTE", transactionNumber, "", newQuote.userid, "", stockSymbol, newQuote.quote, newQuote.cryptokey, "", "", "") return newQuote
def updateDbFunds(self): dbm = dbManager.DBM() return dbm.updateUserFunds(self.username, self.funds)
def updateDbUserStocks(self): dbm = dbManager.DBM() return dbm.updateUserStocks(self.username, self.stocks)
def updateDbUserSellStack(self): dbm = dbManager.DBM() return dbm.updateUserSellStack(self.username, self.sellStack)
def updateDbUserSellTriggers(self): dbm = dbManager.DBM() return dbm.updateUserSellTriggers(self.username, self.sellTriggers)