From e59da7a87bc29c783485ec23f14cd0da0250d773 Mon Sep 17 00:00:00 2001 From: likecodeingloveproblems Date: Sat, 13 Feb 2021 02:41:37 +0330 Subject: [PATCH 1/3] adding event tag to gtag for enhanced ecommerce google analytics --- .../templatetags/google_analytics_gtag.py | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/analytical/templatetags/google_analytics_gtag.py b/analytical/templatetags/google_analytics_gtag.py index ecb5787..002dd20 100644 --- a/analytical/templatetags/google_analytics_gtag.py +++ b/analytical/templatetags/google_analytics_gtag.py @@ -27,7 +27,7 @@ SETUP_CODE = """ """ GTAG_SET_CODE = """gtag('set', {{'{key}': '{value}'}});""" - +GTAG_EVENT_CODE = """gtag('event', {key}, {value});""" register = Library() @@ -61,9 +61,12 @@ class GoogleAnalyticsGTagNode(Node): if identity is not None: other_fields['user_id'] = identity - extra = '\n'.join([ + commands = [ GTAG_SET_CODE.format(key=key, value=value) for key, value in other_fields.items() - ]) + ] + commands+=self._get_event_commands(context) + + extra = '\n'.join(commands) html = SETUP_CODE.format( property_id=self.property_id, extra=extra, @@ -72,6 +75,25 @@ class GoogleAnalyticsGTagNode(Node): html = disable_html(html, 'Google Analytics') return html + def _get_event_commands(self, context): + values = ( + context.get('google_analytics_event%s' % i) for i in range(1, 6) + ) + params = [(i, v) for i, v in enumerate(values, 1) if v is not None] + commands = [] + for _, var in params: + key = var[0] + value = var[1] + try: + dict(value) + except ValueError: + value = f"'{value}'" + commands.append(GTAG_EVENT_CODE.format( + key=key, + value=value, + )) + return commands + def contribute_to_analytical(add_node): GoogleAnalyticsGTagNode() # ensure properly configured From d39f287710173ea1bc8dc4475ca8568add124018 Mon Sep 17 00:00:00 2001 From: likecodeingloveproblems Date: Sat, 13 Feb 2021 02:55:06 +0330 Subject: [PATCH 2/3] fix: one simple flake8 bug --- analytical/templatetags/google_analytics_gtag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytical/templatetags/google_analytics_gtag.py b/analytical/templatetags/google_analytics_gtag.py index 002dd20..7128916 100644 --- a/analytical/templatetags/google_analytics_gtag.py +++ b/analytical/templatetags/google_analytics_gtag.py @@ -64,7 +64,7 @@ class GoogleAnalyticsGTagNode(Node): commands = [ GTAG_SET_CODE.format(key=key, value=value) for key, value in other_fields.items() ] - commands+=self._get_event_commands(context) + commands += self._get_event_commands(context) extra = '\n'.join(commands) html = SETUP_CODE.format( From fbe90df95d71a733cf508563bee53636ba2a09f6 Mon Sep 17 00:00:00 2001 From: likecodeingloveproblems <59439816+likecodeingloveproblems@users.noreply.github.com> Date: Sat, 13 Feb 2021 19:49:11 +0330 Subject: [PATCH 3/3] Update analytical/templatetags/google_analytics_gtag.py that's so nice Co-authored-by: Peter Bittner --- analytical/templatetags/google_analytics_gtag.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/analytical/templatetags/google_analytics_gtag.py b/analytical/templatetags/google_analytics_gtag.py index 7128916..1e14c7f 100644 --- a/analytical/templatetags/google_analytics_gtag.py +++ b/analytical/templatetags/google_analytics_gtag.py @@ -82,8 +82,7 @@ class GoogleAnalyticsGTagNode(Node): params = [(i, v) for i, v in enumerate(values, 1) if v is not None] commands = [] for _, var in params: - key = var[0] - value = var[1] + key, value = var try: dict(value) except ValueError: