def show_stocks(searchterm = '', page = None): search = SearchForm() db = Db() SQL = "SELECT ticker, company_name FROM stocks WHERE ticker LIKE %s OR company_name LIKE %s ORDER BY ticker;" data = ('%', '%') if search.validate_on_submit(): search_data = search.search.data data = (search_data + '%', search_data + '%') db.execute(SQL, data) entries = [dict(ticker = row[0], company = row[1]) for row in db.fetchall()] return render_template('index.html', search = SearchForm(), entries = entries) else: db.execute(SQL, data) entries = [dict(ticker = row[0], company = row[1]) for row in db.fetchall()] return render_template('index.html',search = search, entries=entries)
def show_stock(ticker = None): form = StockForm() db = Db() SQL = "SELECT company_name FROM stocks where ticker = %s;" data = (ticker,) db.execute(SQL, data) company = db.fetchall()[0][0] price_SQL = "SELECT open_price, close_price, high, low, pdate FROM stock_prices WHERE ticker = %s ORDER BY pdate;" volume_SQL = "SELECT volume, vdate FROM stock_volumes where ticker = %s ORDER BY vdate;" dividend_SQL = "SELECT price, ddate from stock_dividends where ticker = %s ORDER BY ddate;" price_dates = [] open_prices = [] high_prices = [] low_prices = [] close_prices = [] volumes = [] dividends = [] db.execute(price_SQL, data) for row in db.fetchall(): date_js = int(time.mktime(row[4].timetuple())) * 1000 open_prices.append([date_js, float(row[0])]) high_prices.append([date_js, float(row[2])]) low_prices.append([date_js, float(row[3])]) close_prices.append([date_js, float(row[1])]) db.execute(volume_SQL, data) for row in db.fetchall(): date_js = int(time.mktime(row[1].timetuple())) * 1000 volumes.append([date_js, float(row[0])]) db.execute(dividend_SQL, data) for row in db.fetchall(): date_js = int(time.mktime(row[1].timetuple())) * 1000 dividends.append([date_js, float(row[0])]) if form.validate_on_submit(): date = str(form.date_field.data).split()[0] nyt = NYT_Parser() nyt.find_articles(company, date) articles = nyt.get_news() return render_template('stock.html', form = form, open_prices = open_prices,close_prices = close_prices, volumes = volumes, dividends = dividends, company = company, ticker = ticker, validated = True, articles = articles) else: return render_template('stock.html', form = form, open_prices = open_prices,close_prices = close_prices, volumes = volumes, dividends = dividends, company = company, ticker = ticker)