nouvelle version qui ajout le code javascript que lorsque le content type est: text...
[auf_django_piwik.git] / auf / django / piwik / middleware.py
index 0fdaa58..c846158 100644 (file)
@@ -4,9 +4,17 @@ import re
 
 from django.conf import settings
 
+try:
+    import auf.django.references.models as ref
+    REFERENCES_CHARGEES = True
+except:
+    REFERENCES_CHARGEES = False
+    
+
 from settings import PIWIK_TOKEN, PIWIK_HOST, PIWIK_HTTPFORCE,\
     PIWIK_TRACKCODE, PIWIK_EXCLUDE_REFERER
 
+
 ire_body = re.compile(re.escape('</body>'), re.IGNORECASE)
 
 
@@ -17,7 +25,7 @@ class TrackMiddleware:
         Trackcode injection avant le body s'il y a un token piwik dans la conf
         locale.
         """
-        if PIWIK_TOKEN is None:
+        if PIWIK_TOKEN is None or response.get('Content-Type', '') != 'text/html':
             return response
 
         http_referer = request.META.get('HTTP_REFERER', "")
@@ -33,14 +41,24 @@ class TrackMiddleware:
         else:
             protocol = "http"
 
+        implantation = ""
+        user = getattr(request, 'user', None)
+        if user and REFERENCES_CHARGEES and user.is_authenticated():
+            try:
+                employe = ref.Employe.objects.get(courriel=request.user.email)
+                imp_id = employe.implantation.id
+                implantation = "piwikTracker.setCustomVariable(1, 'implantation', '%s', 'visit');" % imp_id
+            except :
+                pass
+
         track = PIWIK_TRACKCODE % {
                 'host': PIWIK_HOST,
                 'token': PIWIK_TOKEN,
                 'protocol': protocol,
                 'static': settings.STATIC_URL,
                 'referer': referer,
+                'implantation': implantation,
                 }
-        track += http_referer
         content = response.content
         content_with_trackcode = ire_body.sub('%s</body>' % track, content)
         response.content = content_with_trackcode