Skip to content

Commit

Permalink
Merge pull request #130 from pjdelport/enable-intercom-anonymous-users
Browse files Browse the repository at this point in the history
Enable Intercom for anonymous users
  • Loading branch information
jcassee committed Aug 22, 2018
2 parents 0a549c8 + c34d429 commit 128c535
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
5 changes: 1 addition & 4 deletions analytical/templatetags/intercom.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,13 @@ def _get_custom_attrs(self, context):
return params

def render(self, context):
user = get_user_from_context(context)
params = self._get_custom_attrs(context)
params["app_id"] = self.app_id
html = TRACKING_CODE % {
"settings_json": json.dumps(params, sort_keys=True)
}

if is_internal_ip(context, 'INTERCOM') \
or not user or not get_user_is_authenticated(user):
# Intercom is disabled for non-logged in users.
if is_internal_ip(context, 'INTERCOM'):
html = disable_html(html, 'Intercom')
return html

Expand Down
14 changes: 10 additions & 4 deletions analytical/tests/test_tag_intercom.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

import datetime

from django.contrib.auth.models import User, AnonymousUser
from django.contrib.auth.models import User
from django.http import HttpRequest
from django.template import Context
from django.test.utils import override_settings

Expand All @@ -21,7 +22,7 @@ class IntercomTagTestCase(TagTestCase):

def test_tag(self):
rendered_tag = self.render_tag('intercom', 'intercom')
self.assertTrue(rendered_tag.startswith('<!-- Intercom disabled on internal IP address'))
self.assertTrue(rendered_tag.strip().startswith('<script id="IntercomSettingsScriptTag">'))

def test_node(self):
now = datetime.datetime(2014, 4, 9, 15, 15, 0)
Expand Down Expand Up @@ -99,6 +100,11 @@ def test_no_identify_when_explicit_email(self):
}))
self.assertTrue('"email": "explicit"' in r, r)

def test_disable_for_anonymous_users(self):
r = IntercomNode().render(Context({'user': AnonymousUser()}))
@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 = IntercomNode().render(context)
self.assertTrue(r.startswith('<!-- Intercom disabled on internal IP address'), r)
self.assertTrue(r.endswith('-->'), r)

0 comments on commit 128c535

Please sign in to comment.