From 255dd4f3873e3be1df4b634813ce12201321d89f Mon Sep 17 00:00:00 2001 From: xthepoet Date: Mon, 16 Jul 2012 01:12:52 -0400 Subject: [PATCH 1/3] added alias tag for kissmetrics --- analytical/templatetags/kiss_metrics.py | 8 ++++++++ analytical/tests/test_tag_kiss_metrics.py | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/analytical/templatetags/kiss_metrics.py b/analytical/templatetags/kiss_metrics.py index 40c1859..5803d4b 100644 --- a/analytical/templatetags/kiss_metrics.py +++ b/analytical/templatetags/kiss_metrics.py @@ -35,9 +35,11 @@ TRACKING_CODE = """ IDENTIFY_CODE = "_kmq.push(['identify', '%s']);" EVENT_CODE = "_kmq.push(['record', '%(name)s', %(properties)s]);" PROPERTY_CODE = "_kmq.push(['set', %(properties)s]);" +ALIAS_CODE = "_kmq.push(['alias', '%s', '%s']);" EVENT_CONTEXT_KEY = 'kiss_metrics_event' PROPERTY_CONTEXT_KEY = 'kiss_metrics_properties' +ALIAS_CONTEXT_KEY = 'kiss_metrics_alias' register = Library() @@ -67,6 +69,12 @@ class KissMetricsNode(Node): identity = get_identity(context, 'kiss_metrics') if identity is not None: commands.append(IDENTIFY_CODE % identity) + try: + properties = context[ALIAS_CONTEXT_KEY] + key, value = properties.popitem() + commands.append(ALIAS_CODE % (key,value)) + except KeyError: + pass try: name, properties = context[EVENT_CONTEXT_KEY] commands.append(EVENT_CODE % {'name': name, diff --git a/analytical/tests/test_tag_kiss_metrics.py b/analytical/tests/test_tag_kiss_metrics.py index b92aacc..36831d1 100644 --- a/analytical/tests/test_tag_kiss_metrics.py +++ b/analytical/tests/test_tag_kiss_metrics.py @@ -64,6 +64,12 @@ class KissMetricsTagTestCase(TagTestCase): self.assertTrue("_kmq.push(['set', " '{"prop1": "val1", "prop2": "val2"}]);' in r, r) + def test_alias(self): + r = KissMetricsNode().render(Context({'kiss_metrics_alias': + {'test': 'test_alias'}})) + self.assertTrue("_kmq.push(['alias', 'test', 'test_alias']);" in r,r) + + @override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1']) def test_render_internal_ip(self): req = HttpRequest() From d12bb6de2dacbe445980eb99458ea483e987261b Mon Sep 17 00:00:00 2001 From: xthepoet Date: Mon, 13 Aug 2012 08:17:56 -0700 Subject: [PATCH 2/3] Update docs/services/kiss_metrics.rst --- docs/services/kiss_metrics.rst | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/services/kiss_metrics.rst b/docs/services/kiss_metrics.rst index 91932e5..7b98895 100644 --- a/docs/services/kiss_metrics.rst +++ b/docs/services/kiss_metrics.rst @@ -110,6 +110,26 @@ context processor, the latter clobbers the former. .. _kiss-metrics-event: +Alias +----- + +Alias is used to associate one identity with another. +This most likely will occur if a user is not signed in yet, +you assign them an anonymous identity and record activity for them +and they later sign in and you get a named identity. + +For example:: + context = RequestContext({ + 'kiss_metrics_alias': {'my_registered@email' : 'my_user_id'}, + }) + return some_template.render(context) + +The output script tag will then include the corresponding properties as +documented in the `KISSmetrics alias API`_ docs. + + +.. _`KISSmetrics set API`: http://support.kissmetrics.com/apis/common-methods#alias + Recording events ---------------- From 9031022553c682c33c3d19efe128217aa27b4f23 Mon Sep 17 00:00:00 2001 From: xthepoet Date: Mon, 13 Aug 2012 08:21:46 -0700 Subject: [PATCH 3/3] Update docs/services/kiss_metrics.rst --- docs/services/kiss_metrics.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/services/kiss_metrics.rst b/docs/services/kiss_metrics.rst index 7b98895..7ed8590 100644 --- a/docs/services/kiss_metrics.rst +++ b/docs/services/kiss_metrics.rst @@ -119,6 +119,7 @@ you assign them an anonymous identity and record activity for them and they later sign in and you get a named identity. For example:: + context = RequestContext({ 'kiss_metrics_alias': {'my_registered@email' : 'my_user_id'}, }) @@ -128,7 +129,7 @@ The output script tag will then include the corresponding properties as documented in the `KISSmetrics alias API`_ docs. -.. _`KISSmetrics set API`: http://support.kissmetrics.com/apis/common-methods#alias +.. _`KISSmetrics alias API`: http://support.kissmetrics.com/apis/common-methods#alias Recording events ----------------