def prepare_clients(clients, onlinetime_threshold=-1): ''' Prepare `clients` for rendering sort them, clean their nick-history and convert onlinetime to string :param clients: List of clients to prepare :param onlinetime_threshold: threshold for clients onlinetime :type clients: tsstats.client.Clients :type onlinetime_treshold: int :return: `clients` sorted by onlinetime, kics, pkicks, bans and pbans :rtype: tsstats.template.SortedClients ''' # sort by onlinetime onlinetime_ = sort_clients( clients, lambda c: c.onlinetime.total_seconds() ) # filter clients not matching threshold onlinetime_ = filter_threshold(onlinetime_, onlinetime_threshold) # convert timespans to text onlinetime = [ (client, seconds_to_text(int(onlinetime))) for client, onlinetime in onlinetime_ ] return SortedClients( onlinetime=onlinetime, kicks=sort_clients(clients, lambda c: c.kicks), pkicks=sort_clients(clients, lambda c: c.pkicks), bans=sort_clients(clients, lambda c: c.bans), pbans=sort_clients(clients, lambda c: c.pbans) )
def prepare_clients(clients, onlinetime_threshold=-1): ''' Prepare `clients` for rendering sort them and convert onlinetime to string :param clients: List of clients to prepare :param onlinetime_threshold: threshold for clients onlinetime :type clients: tsstats.client.Clients :type onlinetime_treshold: int :return: `clients` sorted by onlinetime, kics, pkicks, bans and pbans :rtype: tsstats.template.SortedClients ''' # sort by onlinetime onlinetime_ = sort_clients( clients, lambda c: c.onlinetime.total_seconds() ) # filter clients not matching threshold onlinetime_ = filter_threshold(onlinetime_, onlinetime_threshold) # convert timespans to text onlinetime = [ (client, seconds_to_text(int(onlinetime))) for client, onlinetime in onlinetime_ ] return SortedClients( onlinetime=onlinetime, kicks=sort_clients(clients, lambda c: c.kicks), pkicks=sort_clients(clients, lambda c: c.pkicks), bans=sort_clients(clients, lambda c: c.bans), pbans=sort_clients(clients, lambda c: c.pbans) )
def test_filter_threshold(): sorted_clients = sort_clients(clients, lambda c: c.onlinetime.total_seconds()) assert len(filter_threshold(sorted_clients, -1)) == len(sorted_clients) assert len(filter_threshold(sorted_clients, 20)) == 1 assert len(filter_threshold(sorted_clients, 500)) == 0