TeamspeakStats/tsstats/template.py

53 lines
1.8 KiB
Python
Raw Normal View History

import logging
from os.path import abspath
from time import localtime, strftime
from jinja2 import Environment, FileSystemLoader
from tsstats.utils import seconds_to_text, sort_clients
logger = logging.getLogger('tsstats')
def render_template(clients, output, template_name='tsstats/template.html',
title='TeamspeakStats'):
'''
render template with `clients`
:param clients: clients to fill template with
:param output: path to output-file
:param template_name: path to template-file
:param title: title of the resulting html-document
:type clients: tsstats.client.Clients
:type output: str
:type template_name: str
:type title: str
'''
# prepare clients
clients_onlinetime_ = sort_clients(clients, 'onlinetime')
clients_onlinetime = [
(client, seconds_to_text(onlinetime))
for client, onlinetime in clients_onlinetime_
]
clients_kicks = sort_clients(clients, 'kicks')
clients_pkicks = sort_clients(clients, 'pkicks')
clients_bans = sort_clients(clients, 'bans')
clients_pbans = sort_clients(clients, 'pbans')
objs = [('Onlinetime', clients_onlinetime), ('Kicks', clients_kicks),
('passive Kicks', clients_pkicks),
('Bans', clients_bans), ('passive Bans', clients_pbans)]
# render
template_loader = FileSystemLoader(abspath('.'))
template_env = Environment(loader=template_loader)
def fmttime(timestamp):
return strftime('%x %X', localtime(int(timestamp)))
template_env.filters['frmttime'] = fmttime
template = template_env.get_template(template_name)
with open(output, 'w') as f:
f.write(template.render(title=title, objs=objs,
debug=logger.level <= logging.DEBUG))