import database_connections.sql_support_functions as ssf
import pandas as pd
import kabbes_menu
import web_traffic_monitor
from flask import redirect
[docs]class Monitor( web_traffic_monitor.Base, kabbes_menu.Menu ):
DEFAULT_ATT_VALUES = {
}
_OVERRIDE_OPTIONS = {
"1": [ 'Open Slugs', 'run_Child_user' ],
"2": [ 'Query Database', 'query_db_user'],
"6": [ 'Reload', '_import'],
"7": [ "Print Config", "print_config"]
}
cfg_menu = kabbes_menu.Client( _OVERRIDE_OPTIONS=_OVERRIDE_OPTIONS ).cfg_menu
def __init__( self ):
web_traffic_monitor.Base.__init__( self )
kabbes_menu.Menu.__init__( self )
self.init_db()
self._import()
self._Children = [ self.Slugs ]
[docs] def print_config( self ):
self.cfg_wtm.print_atts()
[docs] def init_db( self ):
self.db_conn = ssf.get_DatabaseConnection()
self.db_conn.set_atts( self.cfg_wtm['db_conn_kwargs'].get_dict() )
self.db_conn.get_conn( **self.cfg_wtm['db_get_conn_kwargs'].get_dict() )
self.db_conn.get_cursor()
# initialize tables if they somehow got deleted
db_tables = self.db_conn.get_all_tables()
for table in web_traffic_monitor.Tables.tables:
if table not in db_tables:
df = pd.DataFrame( columns = web_traffic_monitor.Tables.tables[table]['columns'] )
self.db_conn.write( df, table )
[docs] def query_db( self, string: str ) -> pd.DataFrame:
return self.db_conn.query( string )
[docs] def query_db_user( self ):
print ( self.query_db( input('Enter your query: ') ) )
[docs] def exit( self ):
self._export()
def _import( self ):
self.Slugs = web_traffic_monitor.Slugs.make( self ) # reinitialize the slugs so they start from scratch
self.Slugs._import()
def _export( self ):
self.Slugs._export()
[docs] def run_RTI_choice(self, Slugs_inst):
Slugs_inst.run()