def transaction(username, volume, company, trans_type, algo_id): udao1 = User_stock_value_dao() udao2 = User_portfolio_dao() cdao = Company_dao() tdao = Transaction_dao() hdao = History_dao() c = cdao.get_company_model(company) ask = Decimal(c.get_ask()) #time = datetime.datetime.utcnow() final = calculate_price(ask, volume) if trans_type == 'buy': u = udao2.get_user_portfolio_model(username) if final <= u.get_available_funds(): tdao.buy(username, company, volume, ask, algo_id) hdao.insert(username, 'buy', company, ask, final, volume, algo_id) o = tdao.get_user_stock_value_model(username) if o.get_total_stock_values(): udao1.update_total_stock_values(username, o.get_total_stock_values()) if o.get_profit(): udao1.update_profit(username, o.get_profit()) up = udao2.get_user_portfolio_model(username) udao2.update_available_funds( username, Decimal(up.get_available_funds()) - final) elif trans_type == 'sell': o = tdao.get_owned_stock_model(username, company, ask) if o.get_volume() >= volume: tdao.sell(username, company, volume, ask, algo_id) hdao.insert(username, 'sell', company, ask, final, volume, algo_id) u = tdao.get_user_stock_value_model(username) udao1.update_total_stock_values(username, u.get_total_stock_values()) udao1.update_profit(username, u.get_profit()) portfolio = udao2.get_user_portfolio_model(username) udao2.update_available_funds( username, Decimal(final) + Decimal(portfolio.get_available_funds())) udao2.update_total_portfolio( username, Decimal(final) + Decimal(portfolio.get_available_funds()) + Decimal(u.get_total_stock_values()))
portfolio_filter = form.getvalue("filter") if portfolio_filter == '1': filter_flag = "ALL" elif portfolio_filter == '2': filter_flag = "ALGOS" elif portfolio_filter == '0': filter_flag = "USER" else: filter_flag = portfolio_filter tdao = Transaction_dao() u2 = User_stock_value_dao() u1 = User_portfolio_dao() cdao = Company_dao() hdao = History_dao() data = {} if filter_flag == "ALL": t = hdao.select_all(username) l = tdao.get_user_stock_list(username) elif filter_flag == "ALGOS": t = hdao.select_all_algo_trades(username) l = tdao.get_all_algo_stock_list(username) elif filter_flag == "USER": t = hdao.select_all_user_trades(username) l = tdao.get_only_user_stock_list(username) else: t = hdao.select_algo_trades(username, filter_flag) l = tdao.get_algo_stock_list(username, filter_flag)