X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/8f6f6d2cc234f08e48055a1804997f6773321b3e..9f982b5217a21f9b59e72db4aa228abd5625c658:/src/stats/utils.py diff --git a/src/stats/utils.py b/src/stats/utils.py index fc473a6f0..d21eb3c3c 100644 --- a/src/stats/utils.py +++ b/src/stats/utils.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # @@ -6,11 +5,11 @@ from django.conf import settings from datetime import datetime import logging from functools import update_wrapper -import urllib +from urllib.parse import urlencode from random import random from inspect import isclass -from django.utils.encoding import force_str +from django.utils.encoding import force_bytes from .tasks import track_request @@ -18,13 +17,13 @@ logger = logging.getLogger(__name__) def piwik_url(request): - return urllib.urlencode(dict( + return urlencode(dict( idsite=getattr(settings, 'PIWIK_SITE_ID', '0'), rec=1, - url=force_str('http://%s%s' % (request.META['HTTP_HOST'], request.path)), + url=force_bytes('http://%s%s' % (request.META['HTTP_HOST'], request.path)), rand=int(random() * 0x10000), apiv=PIWIK_API_VERSION, - urlref=force_str(request.META.get('HTTP_REFERER', '')), + urlref=force_bytes(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', ''), @@ -62,3 +61,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