From 83312e01f9a0a1983c2db2abb1b8692b12c2e377 Mon Sep 17 00:00:00 2001 From: Peter Bittner Date: Wed, 18 May 2016 23:41:58 +0200 Subject: [PATCH] Remove Reinvigorate template tag, tests and docs Closes #82 --- README.rst | 1 - analytical/templatetags/analytical.py | 1 - analytical/templatetags/reinvigorate.py | 81 ----------- analytical/tests/test_tag_reinvigorate.py | 67 --------- docs/install.rst | 4 - docs/services/reinvigorate.rst | 157 ---------------------- 6 files changed, 311 deletions(-) delete mode 100644 analytical/templatetags/reinvigorate.py delete mode 100644 analytical/tests/test_tag_reinvigorate.py delete mode 100644 docs/services/reinvigorate.rst diff --git a/README.rst b/README.rst index bb404cf..47accee 100644 --- a/README.rst +++ b/README.rst @@ -90,7 +90,6 @@ Currently Supported Services .. _`Optimizely`: http://www.optimizely.com/ .. _`Performable`: http://www.performable.com/ .. _`Piwik`: http://www.piwik.org/ -.. _`Reinvigorate`: http://www.reinvigorate.net/ .. _`SnapEngage`: http://www.snapengage.com/ .. _`Spring Metrics`: http://www.springmetrics.com/ .. _`UserVoice`: http://www.uservoice.com/ diff --git a/analytical/templatetags/analytical.py b/analytical/templatetags/analytical.py index c6ba6d6..68e0d6b 100644 --- a/analytical/templatetags/analytical.py +++ b/analytical/templatetags/analytical.py @@ -34,7 +34,6 @@ TAG_MODULES = [ 'analytical.optimizely', 'analytical.performable', 'analytical.piwik', - 'analytical.reinvigorate', 'analytical.snapengage', 'analytical.spring_metrics', 'analytical.uservoice', diff --git a/analytical/templatetags/reinvigorate.py b/analytical/templatetags/reinvigorate.py deleted file mode 100644 index 4f577bc..0000000 --- a/analytical/templatetags/reinvigorate.py +++ /dev/null @@ -1,81 +0,0 @@ -""" -Reinvigorate template tags and filters. -""" - -from __future__ import absolute_import - -import json -import re - -from django.template import Library, Node, TemplateSyntaxError - -from analytical.utils import get_identity, is_internal_ip, disable_html, \ - get_required_setting - - -TRACKING_ID_RE = re.compile(r'^[\w\d]+-[\w\d]+$') -TRACKING_CODE = """ - - -""" - - -register = Library() - - -@register.tag -def reinvigorate(parser, token): - """ - Reinvigorate tracking template tag. - - Renders Javascript code to track page visits. You must supply - your Reinvigorate tracking ID (as a string) in the - ``REINVIGORATE_TRACKING_ID`` setting. - """ - bits = token.split_contents() - if len(bits) > 1: - raise TemplateSyntaxError("'%s' takes no arguments" % bits[0]) - return ReinvigorateNode() - - -class ReinvigorateNode(Node): - def __init__(self): - self.tracking_id = get_required_setting('REINVIGORATE_TRACKING_ID', - TRACKING_ID_RE, - "must be a string looking like XXXXX-XXXXXXXXXX") - - def render(self, context): - re_vars = {} - for dict_ in context: - for var, val in dict_.items(): - if var.startswith('reinvigorate_'): - re_vars[var[13:]] = val - if 'name' not in re_vars: - identity = get_identity(context, 'reinvigorate', - lambda u: u.get_full_name()) - if identity is not None: - re_vars['name'] = identity - if 'context' not in re_vars: - email = get_identity(context, 'reinvigorate', lambda u: u.email) - if email is not None: - re_vars['context'] = email - tags = " ".join("var re_%s_tag = %s;" % (tag, json.dumps(value, sort_keys=True)) - for tag, value in re_vars.items()) - - html = TRACKING_CODE % {'tracking_id': self.tracking_id, - 'tags': tags} - if is_internal_ip(context, 'REINVIGORATE'): - html = disable_html(html, 'Reinvigorate') - return html - - -def contribute_to_analytical(add_node): - ReinvigorateNode() # ensure properly configured - add_node('body_bottom', ReinvigorateNode) diff --git a/analytical/tests/test_tag_reinvigorate.py b/analytical/tests/test_tag_reinvigorate.py deleted file mode 100644 index c23febd..0000000 --- a/analytical/tests/test_tag_reinvigorate.py +++ /dev/null @@ -1,67 +0,0 @@ -""" -Tests for the Reinvigorate template tags and filters. -""" - -import re - -from django.contrib.auth.models import User, AnonymousUser -from django.http import HttpRequest -from django.template import Context -from django.test.utils import override_settings - -from analytical.templatetags.reinvigorate import ReinvigorateNode -from analytical.tests.utils import TagTestCase -from analytical.utils import AnalyticalException - - -@override_settings(REINVIGORATE_TRACKING_ID='12345-abcdefghij') -class ReinvigorateTagTestCase(TagTestCase): - """ - Tests for the ``reinvigorate`` template tag. - """ - - def test_tag(self): - r = self.render_tag('reinvigorate', 'reinvigorate') - self.assertTrue('reinvigorate.track("12345-abcdefghij");' in r, r) - - def test_node(self): - r = ReinvigorateNode().render(Context({})) - self.assertTrue('reinvigorate.track("12345-abcdefghij");' in r, r) - - @override_settings(REINVIGORATE_TRACKING_ID=None) - def test_no_tracking_id(self): - self.assertRaises(AnalyticalException, ReinvigorateNode) - - @override_settings(REINVIGORATE_TRACKING_ID='123abc') - def test_wrong_tracking_id(self): - self.assertRaises(AnalyticalException, ReinvigorateNode) - - @override_settings(ANALYTICAL_AUTO_IDENTIFY=True) - def test_identify(self): - r = ReinvigorateNode().render(Context({'user': - User(username='test', first_name='Test', last_name='User', - email='test@example.com')})) - self.assertTrue('var re_name_tag = "Test User";' in r, r) - self.assertTrue('var re_context_tag = "test@example.com";' in r, r) - - @override_settings(ANALYTICAL_AUTO_IDENTIFY=True) - def test_identify_anonymous_user(self): - r = ReinvigorateNode().render(Context({'user': AnonymousUser()})) - self.assertFalse('var re_name_tag = ' in r, r) - self.assertFalse('var re_context_tag = ' in r, r) - - def test_tags(self): - r = ReinvigorateNode().render(Context({'reinvigorate_var1': 'val1', - 'reinvigorate_var2': 2})) - self.assertTrue(re.search('var re_var1_tag = "val1";', r), r) - self.assertTrue(re.search('var re_var2_tag = 2;', r), r) - - @override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1']) - def test_render_internal_ip(self): - req = HttpRequest() - req.META['REMOTE_ADDR'] = '1.1.1.1' - context = Context({'request': req}) - r = ReinvigorateNode().render(context) - self.assertTrue(r.startswith( - ''), r) diff --git a/docs/install.rst b/docs/install.rst index b29fec3..37db7a0 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -162,10 +162,6 @@ settings required to enable each service are listed here: PIWIK_DOMAIN_PATH = 'your.piwik.server/optional/path' PIWIK_SITE_ID = '123' -* :doc:`Reinvigorate `:: - - REINVIGORATE_TRACKING_ID = '12345-abcdefghij' - * :doc:`Woopra `:: WOOPRA_DOMAIN = 'abcde.com' diff --git a/docs/services/reinvigorate.rst b/docs/services/reinvigorate.rst deleted file mode 100644 index 44051d7..0000000 --- a/docs/services/reinvigorate.rst +++ /dev/null @@ -1,157 +0,0 @@ -================================ -Reinvigorate -- visitor tracking -================================ - -Reinvigorate_ gives you real-time traffic analysis, visitor activity, -search and referrer information and click heatmaps. A system tray / -system status bar application for your desktop notifies you when -interesting events occur. - -.. _Reinvigorate: http://www.reinvigorate.net/ - - -.. reinvigorate-installation: - -Installation -============ - -To start using the Reinvigorate integration, you must have installed the -django-analytical package and have added the ``analytical`` application -to :const:`INSTALLED_APPS` in your project :file:`settings.py` file. -See :doc:`../install` for details. - -Next you need to add the Reinvigorate template tag to your templates. -This step is only needed if you are not using the generic -:ttag:`analytical.*` tags. If you are, skip to -:ref:`reinvigorate-configuration`. - -The Reinvigorate tracking code is inserted into templates using a -template tag. Load the :mod:`reinvigorate` template tag library and -insert the :ttag:`reinvigorate` tag. Because every page that you want -to track must have the tag, it is useful to add it to your base -template. Insert the tag somewhere within the HTML body:: - - {% load reinvigorate %} - ... - {% reinvigorate %} - - - - -.. _reinvigorate-configuration: - -Configuration -============= - -Before you can use the Reinvigorate integration, you must first set your -tracking ID. You can also customize the data that Reinvigorate tracks. - - -.. _reinvigorate-tracking-id: - -Setting the tracking ID ------------------------ - -Every website you track with Reinvigorate gets a tracking ID, and the -:ttag:`reinvigorate` tag will include it in the rendered Javascript -code. You can find the tracking ID in the URL of your website report -pages. The URL looks like this: - - \https://report.reinvigorate.net/accounts/XXXXX-XXXXXXXXXX/ - -Here, ``XXXXX-XXXXXXXXXX`` is the tracking ID. Set -:const:`REINVIGORATE_TRACKING_ID` in the project :file:`settings.py` -file:: - - REINVIGORATE_TRACKING_ID = 'XXXXX-XXXXXXXXXX' - -If you do not set a tracking ID, the tracking code will not be rendered. - - -.. _reinvigorate-internal-ips: - -Internal IP addresses ---------------------- - -Usually you do not want to track clicks from your development or -internal IP addresses. By default, if the tags detect that the client -comes from any address in the :const:`REINVIGORATE_INTERNAL_IPS` -setting, the tracking code is commented out. It takes the value of -:const:`ANALYTICAL_INTERNAL_IPS` by default (which in turn is -:const:`INTERNAL_IPS` by default). See :ref:`identifying-visitors` for -important information about detecting the visitor IP address. - - -.. _reinvigorate-tags: - -Reinvigorate tags ------------------ - -As described in the Reinvigorate *NameTags* and *Snoop* pages, -the data that is tracked by Reinvigorate can be customized by adding -*tags* to the Javascript tracking code. (These should not be confused -with Django template tags.) Using template context variables, you can -let the :ttag:`reinvigorate` template tag pass reinvigorate tags to -automatically. You can set the context variables in your view when your -render a template containing the tracking code:: - - context = RequestContext({'reinvigorate_purchase': True, - 'reinvigorate_comment': 'Got discount'}) - return some_template.render(context) - -If you have tags that are generated on every page, you may want to set -them in a context processor that you add to the -:data:`TEMPLATE_CONTEXT_PROCESSORS` list in :file:`settings.py`:: - - def reinvigorate_tags(request): - try: - return {'name': request.user.username} - except AttributeError: - return {} - -Just remember that if you set the same context variable in the -:class:`~django.template.context.RequestContext` constructor and in a -context processor, the latter clobbers the former. - -Here is a table with the most important tags. All tags listed on the -Reinvigorate pages can be set by replacing ``re_XXX_tag`` with -``reinvigorate_XXX``. - -========================= ============================================= -Context variable Description -========================= ============================================= -``reinvigorate_name`` The visitor name. -------------------------- --------------------------------------------- -``reinvigorate_context`` Some context information about the visitor, - e.g. an e-mail address. -------------------------- --------------------------------------------- -``reinvigorate_purchase`` A boolean indicating whether the visitor has - just made a purchase. Setting this variable - triggers an event in the Snoop notification - application. -------------------------- --------------------------------------------- -``reinvigorate_new_user`` A boolean indicating whether the visitor has - just registered as a new user. Setting this - variable triggers an event in the Snoop - notification application. -------------------------- --------------------------------------------- -``reinvigorate_comment`` A comment, which is included in a Snoop - event notification. -========================= ============================================= - - -.. _reinvigorate-identify-user: - -Identifying authenticated users -------------------------------- - -If you have not set the ``reinvigorate_name`` context variable -explicitly, the full name of an authenticated user is passed to -Reinvigorate automatically. Similarly, the e-mail address is passed -automatically in the ``context`` tag. See :ref:`identifying-visitors`. - - ----- - -Thanks go to Reinvigorate for their support with the development of this -application.