def generate_report(number_of_days=7): conn, cur = db_controller.db_access().open_connection() query = '''SELECT * FROM player_activity WHERE "Time_Stamp" >= (now() - '{0} day'::INTERVAL);''' cur.execute(query.format(number_of_days)) data = cur.fetchall() db_controller.db_access.close_connection(conn, cur) logging.debug('DB dump') logging.debug(data) # Generate list of server names from query server_names = set([x[4] for x in data]) server_data = [] # Individual Servers for i in server_names: minutes_used = len([x for x in data if x[4] == i]) server_data.append((i, minutes_used)) # Total Usage for period minutes_used = 0 for i in server_data: minutes_used += i[1] msg = ['During the last ' + str(number_of_days) + ' days: \n\n'] # Email Message Body for i in server_data: msg.append(i[0]) msg.append(' has used ') msg.append(str(i[1])) msg.append(' minute(s). \n') msg.append('\nA total of ' + str(minutes_used) + ' minute(s) were used.') msg.append('\n\nReport Generated @ ' + str(datetime.now())) subj = "Minecraft Server Usage Report" gmail().send(subject=subj, text=''.join(msg))
def log_active_players_to_db(self): """ Takes active players and logs list to db with timestamp """ logging.debug('# of players: ' + str(self.ping[3])) # number of players logging.debug('PID: ' + str(self.screen_pid)) players_list = json.dumps([]) # players_list = json.dumps(self.get_player_list()) conn, cur = db_controller.db_access().open_connection() cur.execute( 'INSERT INTO player_activity ("Time_Stamp","Player_Count","Player_Names","Server_Name") VALUES (%s, %s, %s,%s)', (datetime.now(), self.ping[3], players_list, self.server_name)) db_controller.db_access.close_connection(conn, cur)