From d7fcdb0346a1b361518d12d52f0e6e6023b3ae57 Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Sun, 6 Dec 2015 13:13:11 -0300 Subject: [PATCH] Make mixpanel dj19-compatible Looks like django>=1.9 uses `token` somewhere for simpletags, so use `_token` for our own to avoid it getting overwritten. --- analytical/templatetags/mixpanel.py | 7 ++++--- analytical/tests/test_tag_mixpanel.py | 12 ++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/analytical/templatetags/mixpanel.py b/analytical/templatetags/mixpanel.py index 34f8efd..0490f76 100644 --- a/analytical/templatetags/mixpanel.py +++ b/analytical/templatetags/mixpanel.py @@ -8,6 +8,7 @@ import json import re from django.template import Library, Node, TemplateSyntaxError +from django.utils.safestring import mark_safe from analytical.utils import is_internal_ip, disable_html, get_identity, \ get_required_setting @@ -46,7 +47,7 @@ def mixpanel(parser, token): class MixpanelNode(Node): def __init__(self): - self.token = get_required_setting( + self._token = get_required_setting( 'MIXPANEL_API_TOKEN', MIXPANEL_API_TOKEN_RE, "must be a string containing a 32-digit hexadecimal number") @@ -65,11 +66,11 @@ class MixpanelNode(Node): 'properties': json.dumps(properties, sort_keys=True)}) except KeyError: pass - html = TRACKING_CODE % {'token': self.token, + html = TRACKING_CODE % {'token': self._token, 'commands': " ".join(commands)} if is_internal_ip(context, 'MIXPANEL'): html = disable_html(html, 'Mixpanel') - return html + return mark_safe(html) def contribute_to_analytical(add_node): diff --git a/analytical/tests/test_tag_mixpanel.py b/analytical/tests/test_tag_mixpanel.py index eceae8d..b43a8d2 100644 --- a/analytical/tests/test_tag_mixpanel.py +++ b/analytical/tests/test_tag_mixpanel.py @@ -20,15 +20,15 @@ class MixpanelTagTestCase(TagTestCase): def test_tag(self): r = self.render_tag('mixpanel', 'mixpanel') - self.assertTrue( - "mixpanel.init('0123456789abcdef0123456789abcdef');" in r, - r) + self.assertIn( + "mixpanel.init('0123456789abcdef0123456789abcdef');", r, + ) def test_node(self): r = MixpanelNode().render(Context()) - self.assertTrue( - "mixpanel.init('0123456789abcdef0123456789abcdef');" in r, - r) + self.assertIn( + "mixpanel.init('0123456789abcdef0123456789abcdef');", r, + ) @override_settings(MIXPANEL_API_TOKEN=None) def test_no_token(self):