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)