X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..49fd68327eee961b167b0dbbb80e99d6295afe10:/src/wolnelektury/middleware.py?ds=sidebyside diff --git a/src/wolnelektury/middleware.py b/src/wolnelektury/middleware.py index 60b382cd3..956f97963 100644 --- a/src/wolnelektury/middleware.py +++ b/src/wolnelektury/middleware.py @@ -1,25 +1,26 @@ -# Orignal version taken from http://www.djangosnippets.org/snippets/186/ +# Original version taken from http://www.djangosnippets.org/snippets/186/ # Original author: udfalkso # Modified by: Shwagroo Team import sys import os import re -import hotshot, hotshot.stats +import hotshot +import hotshot.stats import tempfile -import StringIO +import io import pprint from django.conf import settings from django.db import connection -words_re = re.compile( r'\s+' ) +words_re = re.compile(r'\s+') group_prefix_re = [ - re.compile( "^.*/django/[^/]+" ), - re.compile( "^(.*)/[^/]+$" ), # extract module path - re.compile( ".*" ), # catch strange entries + re.compile("^.*/django/[^/]+"), + re.compile("^(.*)/[^/]+$"), # extract module path + re.compile(".*"), # catch strange entries ] @@ -36,24 +37,24 @@ class ProfileMiddleware(object): WARNING: It uses hotshot profiler which is not thread safe. """ def process_request(self, request): - if (settings.DEBUG or request.user.is_superuser) and request.GET.has_key('prof'): + if (settings.DEBUG or request.user.is_superuser) and 'prof' in request.GET: connection.queries = [] self.tmpfile = tempfile.mktemp() self.prof = hotshot.Profile(self.tmpfile) def process_view(self, request, callback, callback_args, callback_kwargs): - if (settings.DEBUG or request.user.is_superuser) and request.GET.has_key('prof'): + if (settings.DEBUG or request.user.is_superuser) and 'prof' in request.GET: return self.prof.runcall(callback, request, *callback_args, **callback_kwargs) def get_group(self, file): for g in group_prefix_re: - name = g.findall( file ) + name = g.findall(file) if name: return name[0] def get_summary(self, results_dict, sum): - list = [ (item[1], item[0]) for item in results_dict.items() ] - list.sort( reverse = True ) + list = [(item[1], item[0]) for item in results_dict.items()] + list.sort(reverse=True) list = list[:40] res = " tottime\n" @@ -62,7 +63,7 @@ class ProfileMiddleware(object): foo = 0 else: foo = 100*item[0]/sum - res += "%4.1f%% %7.3f %s\n" % (foo, item[0], item[1] ) + res += "%4.1f%% %7.3f %s\n" % (foo, item[0], item[1]) return res @@ -75,31 +76,31 @@ class ProfileMiddleware(object): sum = 0 for s in stats_str: - fields = words_re.split(s); + fields = words_re.split(s) if len(fields) == 7: time = float(fields[2]) sum += time file = fields[6].split(":")[0] - if not file in mystats: + if file not in mystats: mystats[file] = 0 mystats[file] += time group = self.get_group(file) - if not group in mygroups: - mygroups[ group ] = 0 - mygroups[ group ] += time + if group not in mygroups: + mygroups[group] = 0 + mygroups[group] += time return "
" + \ - " ---- By file ----\n\n" + self.get_summary(mystats,sum) + "\n" + \ - " ---- By group ---\n\n" + self.get_summary(mygroups,sum) + \ + " ---- By file ----\n\n" + self.get_summary(mystats, sum) + "\n" + \ + " ---- By group ---\n\n" + self.get_summary(mygroups, sum) + \ "" def process_response(self, request, response): - if (settings.DEBUG or request.user.is_superuser) and request.GET.has_key('prof'): + if (settings.DEBUG or request.user.is_superuser) and 'prof' in request.GET: self.prof.close() - out = StringIO.StringIO() + out = io.BytesIO() old_stdout = sys.stdout sys.stdout = out @@ -123,4 +124,3 @@ class ProfileMiddleware(object): response.content += pprint.pformat(connection.queries) return response -