X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/ae60b2a3949e96357477cc04f90fd0873cee8a92..7cb7624d4864f0cb7ddce5b14879971ff97eb80e:/src/stats/utils.py?ds=sidebyside diff --git a/src/stats/utils.py b/src/stats/utils.py index 474d1b59a..86ce54ccd 100644 --- a/src/stats/utils.py +++ b/src/stats/utils.py @@ -9,6 +9,9 @@ from functools import update_wrapper import urllib from random import random from inspect import isclass + +from django.utils.encoding import force_str + from .tasks import track_request logger = logging.getLogger(__name__) @@ -18,10 +21,10 @@ def piwik_url(request): return urllib.urlencode(dict( idsite=getattr(settings, 'PIWIK_SITE_ID', '0'), rec=1, - url='http://%s%s' % (request.META['HTTP_HOST'], request.path), + url=force_str('http://%s%s' % (request.META['HTTP_HOST'], request.path)), rand=int(random() * 0x10000), apiv=PIWIK_API_VERSION, - urlref=request.META.get('HTTP_REFERER', ''), + urlref=force_str(request.META.get('HTTP_REFERER', '')), ua=request.META.get('HTTP_USER_AGENT', ''), lang=request.META.get('HTTP_ACCEPT_LANGUAGE', ''), token_auth=getattr(settings, 'PIWIK_TOKEN', ''), @@ -59,3 +62,16 @@ def piwik_track(klass_or_method): return klass else: return wrap + + +def piwik_track_view(view): + if not getattr(settings, 'PIWIK_SITE_ID', 0): + return view + + def wrap(request, *args, **kwargs): + if getattr(request, 'piwik_track', True): + track_request.delay(piwik_url(request)) + return view(request, *args, **kwargs) + + update_wrapper(wrap, view) + return wrap