From 46aed5481fec6538d6e7af106e60ea0bb6ca3641 Mon Sep 17 00:00:00 2001 From: Diederik van der Boor Date: Thu, 17 May 2018 15:36:39 +0200 Subject: [PATCH] Make sure Google Analytics calls like _anonymizeIp settings happen before calling _trackPageview --- analytical/templatetags/google_analytics.py | 3 ++- analytical/tests/test_tag_google_analytics.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/analytical/templatetags/google_analytics.py b/analytical/templatetags/google_analytics.py index d7e7768..094f506 100644 --- a/analytical/templatetags/google_analytics.py +++ b/analytical/templatetags/google_analytics.py @@ -32,7 +32,6 @@ SETUP_CODE = """ var _gaq = _gaq || []; _gaq.push(['_setAccount', '%(property_id)s']); - _gaq.push(['_trackPageview']); %(commands)s (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; @@ -44,6 +43,7 @@ SETUP_CODE = """ """ DOMAIN_CODE = "_gaq.push(['_setDomainName', '%s']);" NO_ALLOW_HASH_CODE = "_gaq.push(['_setAllowHash', false]);" +TRACK_PAGE_VIEW = "_gaq.push(['_trackPageview']);" ALLOW_LINKER_CODE = "_gaq.push(['_setAllowLinker', true]);" CUSTOM_VAR_CODE = "_gaq.push(['_setCustomVar', %(index)s, '%(name)s', " \ "'%(value)s', %(scope)s]);" @@ -87,6 +87,7 @@ class GoogleAnalyticsNode(Node): commands = self._get_domain_commands(context) commands.extend(self._get_custom_var_commands(context)) commands.extend(self._get_other_commands(context)) + commands.append(TRACK_PAGE_VIEW) if getattr(settings, 'GOOGLE_ANALYTICS_DISPLAY_ADVERTISING', False): source = DISPLAY_ADVERTISING_SOURCE else: diff --git a/analytical/tests/test_tag_google_analytics.py b/analytical/tests/test_tag_google_analytics.py index 305e8de..fafeb38 100644 --- a/analytical/tests/test_tag_google_analytics.py +++ b/analytical/tests/test_tag_google_analytics.py @@ -93,6 +93,7 @@ class GoogleAnalyticsTagTestCase(TagTestCase): def test_anonymize_ip(self): r = GoogleAnalyticsNode().render(Context()) self.assertTrue("_gaq.push (['_gat._anonymizeIp']);" in r, r) + self.assertTrue(r.index('_gat._anonymizeIp') < r.index('_trackPageview'), r) @override_settings(GOOGLE_ANALYTICS_ANONYMIZE_IP=False) def test_anonymize_ip_not_present(self):