def dcf_valuation(*args, **kwargs): if not args[0]: return [], [], [], dash.no_update try: df_dict = args[0] live_analysis_mode = args[-2] snapshot_uuid = args[-1] ticker = list(df_dict.keys())[0] dcf_store_dict_json = db.get(ticker + '-' + snapshot_uuid) dcf_store_dict = json.loads( dcf_store_dict_json) if dcf_store_dict_json else None safe_get_dcf = dcf_store_dict.get(ticker).get( 'dcf_df_dict') if dcf_store_dict else None if 1 in live_analysis_mode or not safe_get_dcf: dcf_df, dcf_output_dict = get_dcf_df(*args) else: dcf_df = pd.DataFrame.from_dict(safe_get_dcf) dcf_output_dict = dcf_store_dict[ticker]['dcf_output_dict'] # Capture all inputs to dcf-store.data ctx = dash.callback_context dcf_store_dict = ctx.inputs.pop('fin-store.data') for k, v in ctx.inputs.items(): dcf_store_dict[ticker][k] = v dcf_store_dict[ticker]['dcf_df_dict'] = dcf_df.to_dict('records') dcf_store_dict[ticker]['dcf_output_dict'] = dcf_output_dict dcf_output_df = pd.DataFrame({ 'Price': [dcf_output_dict['last_price']], 'Value': ['{:.2f}'.format(dcf_output_dict['estimated_value_per_share'])], 'Price as % of Value': [ '{:.2f}'.format(100 * dcf_output_dict['last_price'] / dcf_output_dict['estimated_value_per_share']) ], 'PV Total': [get_string_from_number(dcf_output_dict['PV_sum'])], 'PV Terminal Value': [get_string_from_number(dcf_output_dict['PV_terminal_value'])], }) return dcf_store_dict, make_table('dcf-df', dcf_df), dbc.Table.from_dataframe( dcf_output_df, striped=True, bordered=True, hover=True), dash.no_update except TypeError as e: logger.exception(e) return [], [], replace_str_element_w_dash_component( traceback.format_exc()), handler_data_message( 'See Error Message(s) in DCF outputs:', '') except Exception as e: logger.exception(e) raise PreventUpdate
#get options flow from twitter get_options_flow() flow = pd.read_sql("select datetime, text from tweets order by datetime desc", conn) #get reddit data global dfr dfr = get_reddit() ####################### Creating the layout ####################### layout1 = html.Div([ dbc.Row([dbc.Col(make_card("Enter Ticker", "success", ticker_inputs('ticker-input', 'date-picker', 36)))]) #row 1 ,dbc.Row([dbc.Col([make_card("Twitter Order Flow", 'primary', make_table('table-sorting-filtering2', flow, '17px', 10))]) ,dbc.Col([make_card("Fin table ", "secondary", html.Div(id="fin-table"))]) ]) , dbc.Row([make_card("select ticker", "warning", "select ticker")],id = 'cards') #row 2 , dbc.Row([ dbc.Col([ dbc.Row([make_card("Wallstreet Bets New Posts", 'primary' ,[html.P(html.Button('Refresh', id='refresh')) , make_table('table-sorting-filtering', dfr, '17px', 4)]) ], justify = 'center') ]) ,dbc.Col([dbc.Row([dbc.Alert("__Charts__", color="primary")], justify = 'center') ,dbc.Row(html.Div(id='x-vol-1'), justify = 'center') , dcc.Interval( id='interval-component', interval=1*150000, # in milliseconds
def test_make_table(self): table = du.make_table(columns=['pclass', 'age'], data=self.df) self.assertTrue(len(table.columns) == 2)
global dfr dfr = get_reddit() layout1 = html.Div([ # html.Div(id = 'cards') dbc.Row([ dbc.Col( make_card("Enter Ticker", "success", ticker_inputs('ticker-input', 'date-picker', 36))) ]) #row 1 , dbc.Row([ dbc.Col([ make_card("Twitter Order Flow", 'primary', make_table('table-sorting-filtering2', flow, '17px', 10)) ]), dbc.Col( [make_card("Fin table ", "secondary", html.Div(id="fin-table"))]) ]), dbc.Row([make_card("select ticker", "warning", "select ticker")], id='cards') #row 2 , dbc.Row([ dbc.Col([ dbc.Row([ make_card("Wallstreet Bets New Posts", 'primary', [ html.P(html.Button('Refresh', id='refresh')), make_table('table-sorting-filtering', dfr, '17px', 4) ]) ],
#instantiate dash app server using flask for easier hosting server = Flask(__name__) app = dash.Dash(__name__,server = server ,meta_tags=[{ "content": "width=device-width"}], external_stylesheets=[dbc.themes.BOOTSTRAP]) server.wsgi_app = WhiteNoise(server.wsgi_app, root='static/') #used for dynamic callbacks app.config.suppress_callback_exceptions = True #get options flow from twitter get_options_flow() flow = pd.read_sql("select datetime, text from tweets order by datetime desc", conn) #get reddit data get_reddit() top_post = pd.read_sql("select title, score, post from reddit order by score desc", conn) #creating dash layout layout1 = html.Div([ dbc.Row([dbc.Col([make_card("Twitter Order Flow", 'primary', make_table('table-sorting-filtering2', flow, '17px', 10))]) ,dbc.Col([make_card("Wallstreet Bets Top Daily Posts", 'primary', make_table('table-sorting-filtering', top_post, '17px', 4))]) ], no_gutters=True,)#end row , dbc.Row([dbc.Col(make_card("Enter Ticker", "success", ticker_inputs('ticker-input', 'date-picker', 36)))]) #row 2 , dbc.Row(id = 'cards') , dbc.Row([ dbc.Col([make_card("Fin table ", "secondary", html.Div(id="fin-table"))]) ,dbc.Col([dbc.Row([dbc.Alert("_Charts_", color="primary")], justify = 'center') ,dbc.Row(html.Div(id='x-vol-1'), justify = 'center') , dcc.Interval( id='interval-component', interval=1*150000, # in milliseconds n_intervals=0) , dcc.Interval( id='interval-component2',