Index: sitescripts/stats/bin/pagegenerator.py |
=================================================================== |
--- a/sitescripts/stats/bin/pagegenerator.py |
+++ b/sitescripts/stats/bin/pagegenerator.py |
@@ -25,40 +25,40 @@ |
from sitescripts.stats.countrycodes import countrycodes |
-@cached(float("inf")) |
+@cached(float('inf')) |
def get_template_environment(): |
return get_custom_template_environment({ |
- "monthname": lambda value: date(int(value[0:4]), int(value[4:]), 1).strftime("%b %Y"), |
- "weekday": lambda value: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"][int(value)], |
- "countryname": lambda value: countrycodes.get(value, "Unknown"), |
- "sortfield": lambda value, field: (field["sort"] if "sort" in field else default_sort)(value), |
- "maxhits": lambda items: max(value["hits"] for key, value in items), |
- "maxbandwidth": lambda items: max(value["bandwidth"] for key, value in items), |
- "sumhits": lambda items: sum(value["hits"] for key, value in items), |
- "sumbandwidth": lambda items: sum(value["bandwidth"] for key, value in items), |
- "percentage": lambda value, total: float(value) / total * 100 if total != 0 else 0, |
- "isspecial": lambda name, field: field["isspecial"](name) if "isspecial" in field else False, |
- "defaultcount": get_default_count, |
+ 'monthname': lambda value: date(int(value[0:4]), int(value[4:]), 1).strftime('%b %Y'), |
+ 'weekday': lambda value: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'][int(value)], |
+ 'countryname': lambda value: countrycodes.get(value, 'Unknown'), |
+ 'sortfield': lambda value, field: (field['sort'] if 'sort' in field else default_sort)(value), |
+ 'maxhits': lambda items: max(value['hits'] for key, value in items), |
+ 'maxbandwidth': lambda items: max(value['bandwidth'] for key, value in items), |
+ 'sumhits': lambda items: sum(value['hits'] for key, value in items), |
+ 'sumbandwidth': lambda items: sum(value['bandwidth'] for key, value in items), |
+ 'percentage': lambda value, total: float(value) / total * 100 if total != 0 else 0, |
+ 'isspecial': lambda name, field: field['isspecial'](name) if 'isspecial' in field else False, |
+ 'defaultcount': get_default_count, |
}) |
-@cached(float("inf")) |
+@cached(float('inf')) |
def get_main_page_template(): |
- return get_template_environment().get_template(get_config().get("stats", "mainPageTemplate")) |
+ return get_template_environment().get_template(get_config().get('stats', 'mainPageTemplate')) |
-@cached(float("inf")) |
+@cached(float('inf')) |
def get_file_stats_template(): |
- return get_template_environment().get_template(get_config().get("stats", "filePageTemplate")) |
+ return get_template_environment().get_template(get_config().get('stats', 'filePageTemplate')) |
-@cached(float("inf")) |
+@cached(float('inf')) |
def get_file_overview_template(): |
- return get_template_environment().get_template(get_config().get("stats", "fileOverviewTemplate")) |
+ return get_template_environment().get_template(get_config().get('stats', 'fileOverviewTemplate')) |
def default_sort(obj): |
- return sorted(obj.items(), key=lambda (k, v): v["hits"], reverse=True) |
+ return sorted(obj.items(), key=lambda (k, v): v['hits'], reverse=True) |
def ensure_dir(path): |
@@ -72,34 +72,34 @@ |
def generate_main_page(outputfile, month, url, data): |
ensure_dir(outputfile) |
get_main_page_template().stream({ |
- "now": time.time(), |
- "month": month, |
- "url": url, |
- "data": data, |
- }).dump(outputfile, encoding="utf-8") |
+ 'now': time.time(), |
+ 'month': month, |
+ 'url': url, |
+ 'data': data, |
+ }).dump(outputfile, encoding='utf-8') |
def generate_file_stats(outputfile, month, url, overview_url, data, filter=None, filtered_urls={}): |
ensure_dir(outputfile) |
get_file_stats_template().stream({ |
- "now": time.time(), |
- "month": month, |
- "url": url, |
- "overview_url": overview_url, |
- "data": data, |
- "fields": common.fields, |
- "filter": filter, |
- "filtered_urls": filtered_urls |
- }).dump(outputfile, encoding="utf-8") |
+ 'now': time.time(), |
+ 'month': month, |
+ 'url': url, |
+ 'overview_url': overview_url, |
+ 'data': data, |
+ 'fields': common.fields, |
+ 'filter': filter, |
+ 'filtered_urls': filtered_urls |
+ }).dump(outputfile, encoding='utf-8') |
def generate_file_overview(outputfile, url, data): |
ensure_dir(outputfile) |
get_file_overview_template().stream({ |
- "now": time.time(), |
- "url": url, |
- "data": data |
- }).dump(outputfile, encoding="utf-8") |
+ 'now': time.time(), |
+ 'url': url, |
+ 'data': data |
+ }).dump(outputfile, encoding='utf-8') |
def get_names(dir, needdirectories): |
@@ -110,12 +110,12 @@ |
def get_default_count(field): |
- return field.get("defaultcount", 30) |
+ return field.get('defaultcount', 30) |
def generate_pages(datadir, outputdir): |
for server_type, server_type_dir in get_names(datadir, True): |
- baseURL = get_config().get("stats", "baseURL_" + server_type) |
+ baseURL = get_config().get('stats', 'baseURL_' + server_type) |
filedata = {} |
current_month = None |
for month, month_dir in get_names(server_type_dir, True): |
@@ -123,66 +123,66 @@ |
current_month = month |
for filename, path in get_names(month_dir, False): |
- filename = re.sub(r"\.json$", "", filename) |
- with codecs.open(path, "rb", encoding="utf-8") as file: |
+ filename = re.sub(r'\.json$', '', filename) |
+ with codecs.open(path, 'rb', encoding='utf-8') as file: |
data = json.load(file) |
- overview_url = "../../overview-" + common.filename_encode(filename + ".html") |
+ overview_url = '../../overview-' + common.filename_encode(filename + '.html') |
filtered_urls = {} |
for field in common.fields: |
- if field["name"] not in data: |
+ if field['name'] not in data: |
continue |
# Create filtered views for the first thirty values of a field if they |
# have filtered data. |
- sorted_field = get_template_environment().filters["sortfield"](data[field["name"]], field) |
+ sorted_field = get_template_environment().filters['sortfield'](data[field['name']], field) |
for name, value in sorted_field[0:get_default_count(field)]: |
- if filter(lambda k: k not in ("hits", "bandwidth"), value.iterkeys()): |
+ if filter(lambda k: k not in ('hits', 'bandwidth'), value.iterkeys()): |
outputfile = os.path.join(outputdir, |
common.filename_encode(server_type), |
common.filename_encode(month), |
common.filename_encode(filename), |
- "filtered-%s-%s.html" % ( |
- common.filename_encode(field["name"]), |
+ 'filtered-%s-%s.html' % ( |
+ common.filename_encode(field['name']), |
common.filename_encode(name), |
)) |
generate_file_stats(outputfile, month, baseURL + filename, overview_url, |
- value, filter={"field": field, "value": name}) |
+ value, filter={'field': field, 'value': name}) |
- if not field["name"] in filtered_urls: |
- filtered_urls[field["name"]] = {} |
- filtered_urls[field["name"]][name] = os.path.basename(outputfile) |
+ if not field['name'] in filtered_urls: |
+ filtered_urls[field['name']] = {} |
+ filtered_urls[field['name']][name] = os.path.basename(outputfile) |
outputfile = os.path.join(outputdir, |
common.filename_encode(server_type), |
common.filename_encode(month), |
common.filename_encode(filename), |
- "index.html") |
+ 'index.html') |
generate_file_stats(outputfile, month, baseURL + filename, overview_url, |
data, filtered_urls=filtered_urls) |
if filename not in filedata: |
filedata[filename] = {} |
- month_url = "%s/%s/%s" % (common.filename_encode(month), |
+ month_url = '%s/%s/%s' % (common.filename_encode(month), |
common.filename_encode(filename), |
- "index.html") |
- filedata[filename][month] = {"url": month_url, "hits": data["hits"], "bandwidth": data["bandwidth"]} |
+ 'index.html') |
+ filedata[filename][month] = {'url': month_url, 'hits': data['hits'], 'bandwidth': data['bandwidth']} |
monthdata = {} |
for filename, data in filedata.iteritems(): |
outputfile = os.path.join(outputdir, |
common.filename_encode(server_type), |
- "overview-" + common.filename_encode(filename + ".html")) |
+ 'overview-' + common.filename_encode(filename + '.html')) |
generate_file_overview(outputfile, baseURL + filename, data) |
if current_month in data: |
monthdata[filename] = dict(data[current_month]) |
- outputfile = os.path.join(outputdir, common.filename_encode(server_type), "index.html") |
+ outputfile = os.path.join(outputdir, common.filename_encode(server_type), 'index.html') |
generate_main_page(outputfile, current_month, baseURL, monthdata) |
if __name__ == '__main__': |
setupStderr() |
- datadir = get_config().get("stats", "dataDirectory") |
- outputdir = get_config().get("stats", "outputDirectory") |
+ datadir = get_config().get('stats', 'dataDirectory') |
+ outputdir = get_config().get('stats', 'outputDirectory') |
generate_pages(datadir, outputdir) |