From 8cd75d9e606add110db5a2431bf80c732ccf08cc Mon Sep 17 00:00:00 2001 From: Peter Bittner Date: Sun, 6 Dec 2020 16:45:34 +0100 Subject: [PATCH] Add business code for Lucky Orange --- analytical/templatetags/analytical.py | 1 + analytical/templatetags/luckyorange.py | 62 ++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 analytical/templatetags/luckyorange.py diff --git a/analytical/templatetags/analytical.py b/analytical/templatetags/analytical.py index f421cf6..bc9c262 100644 --- a/analytical/templatetags/analytical.py +++ b/analytical/templatetags/analytical.py @@ -29,6 +29,7 @@ TAG_MODULES = [ 'analytical.intercom', 'analytical.kiss_insights', 'analytical.kiss_metrics', + 'analytical.luckyorange', 'analytical.matomo', 'analytical.mixpanel', 'analytical.olark', diff --git a/analytical/templatetags/luckyorange.py b/analytical/templatetags/luckyorange.py new file mode 100644 index 0000000..7eb6ee9 --- /dev/null +++ b/analytical/templatetags/luckyorange.py @@ -0,0 +1,62 @@ +""" +Lucky Orange template tags and filters. +""" + +import re + +from django.template import Library, Node, TemplateSyntaxError + +from analytical.utils import get_required_setting, is_internal_ip, disable_html + + +LUCKYORANGE_TRACKING_CODE = """\ + +""" + + +register = Library() + + +def _validate_no_args(token): + bits = token.split_contents() + if len(bits) > 1: + raise TemplateSyntaxError("'%s' takes no arguments" % bits[0]) + + +@register.tag +def luckyorange(parser, token): + """ + Lucky Orange template tag. + """ + _validate_no_args(token) + return LuckyOrangeNode() + + +class LuckyOrangeNode(Node): + + def __init__(self): + self.site_id = get_required_setting( + 'LUCKYORANGE_SITE_ID', + re.compile(r'^\d+$'), + "must be (a string containing) a number", + ) + + def render(self, context): + html = LUCKYORANGE_TRACKING_CODE % {'LUCKYORANGE_SITE_ID': self.site_id} + if is_internal_ip(context, 'LUCKYORANGE'): + return disable_html(html, 'Lucky Orange') + else: + return html + + +def contribute_to_analytical(add_node): + # ensure properly configured + LuckyOrangeNode() + add_node('head_bottom', LuckyOrangeNode)