Browse Source

feat(analytics): Track view-issue event from activity emails (#10693)

adhiraj 6 years ago
parent
commit
06ce5ae2a9

+ 7 - 8
src/sentry/plugins/sentry_mail/activity/base.py

@@ -2,6 +2,7 @@ from __future__ import absolute_import
 
 from django.core.urlresolvers import reverse
 from django.utils.html import escape, mark_safe
+from six.moves.urllib.parse import urlparse, urlunparse
 
 from sentry import options
 from sentry.models import (
@@ -63,13 +64,8 @@ class ActivityEmail(object):
         ))
 
     def get_group_link(self):
-        return absolute_uri(
-            u'/{}/{}/issues/{}/'.format(
-                self.organization.slug,
-                self.project.slug,
-                self.group.id,
-            )
-        )
+        referrer = self.__class__.__name__
+        return self.group.get_absolute_url(params={'referrer': referrer})
 
     def get_base_context(self):
         activity = self.activity
@@ -86,12 +82,15 @@ class ActivityEmail(object):
 
     def get_group_context(self):
         group_link = self.get_group_link()
-        activity_link = u'{}activity/'.format(group_link)
+        parts = list(urlparse(group_link))
+        parts[2] = parts[2].rstrip('/') + '/activity/'
+        activity_link = urlunparse(parts)
 
         return {
             'group': self.group,
             'link': group_link,
             'activity_link': activity_link,
+            'referrer': self.__class__.__name__,
         }
 
     def get_email_type(self):

+ 1 - 1
src/sentry/templates/sentry/emails/_group.html

@@ -1,6 +1,6 @@
 {% load sentry_helpers %}
 
-{% url 'sentry-group' group.organization.slug group.project.slug group.id as group_link %}
+{% url_with_referrer 'sentry-group' group.organization.slug group.project.slug group.id as group_link %}
 
 {% with type=group.get_event_type metadata=group.get_event_metadata transaction=group.culprit %}
 <div class="issue {% if group.is_resolved %}resolved{% endif %}">

+ 1 - 1
src/sentry/templates/sentry/emails/digests/body.txt

@@ -4,7 +4,7 @@
 {% for rule, groups in digest.iteritems %}{{ rule.label }}
 
 {% for group, records in groups.iteritems %}* {{ group.title }} ({{ group.event_count }} event{{ group.event_count|pluralize }}, {{ group.user_count }} user{{ group.user_count|pluralize }})
-  {% url 'sentry-group' group.organization.slug group.project.slug group.id as group_link %}{% absolute_uri group_link %}
+  {% url 'sentry-group' group.organization.slug group.project.slug group.id as group_link %}{% absolute_uri group_link %}?referrer=digest_email
 
 {% endfor %}{% endfor %}
 

+ 0 - 1
src/sentry/templates/sentry/emails/group_header.html

@@ -1,6 +1,5 @@
 {% load sentry_helpers %}
 
-{% url 'sentry-group' group.organization.slug group.project.slug group.id as group_link %}
 {% url 'sentry-stream' group.organization.slug group.project.slug as project_link %}
 <div class="group-header">
   <table class="group-stats">

+ 9 - 0
src/sentry/templatetags/sentry_helpers.py

@@ -15,6 +15,7 @@ from random import randint
 
 import six
 from django import template
+from django.core.urlresolvers import reverse
 from django.template.defaultfilters import stringfilter
 from django.utils import timezone
 from django.utils.html import escape
@@ -116,6 +117,14 @@ def absolute_uri(parser, token):
     return AbsoluteUriNode(bits, target_var)
 
 
+@register.assignment_tag(takes_context=True)
+def url_with_referrer(context, viewname, *args):
+    url = reverse(viewname, args=args)
+    if context.get('referrer'):
+        url += '?referrer=%s' % context['referrer']
+    return url
+
+
 @register.simple_tag
 def system_origin():
     from sentry.utils.http import absolute_uri, origin_from_url

+ 1 - 0
src/sentry/web/frontend/debug/mail.py

@@ -366,6 +366,7 @@ def digest(request):
         'digest': digest,
         'start': start,
         'end': end,
+        'referrer': 'digest_email',
     }
     add_unsubscribe_link(context)
 

+ 1 - 1
tests/fixtures/emails/assigned.txt

@@ -7,7 +7,7 @@ foo@example.com assigned an issue to foo@example.com
 
 ornare elit pulvinar nisl integer cum ad massa
 
-http://testserver/organization/project/issues/1/
+http://testserver/organization/project/issues/1/?referrer=AssignedActivityEmail
 
 
 Unsubscribe: javascript:alert("This is a preview page, what did you expect to happen?");

+ 1 - 1
tests/fixtures/emails/assigned_self.txt

@@ -7,7 +7,7 @@ foo@example.com assigned an issue to themselves
 
 ornare elit pulvinar nisl integer cum ad massa
 
-http://testserver/organization/project/issues/1/
+http://testserver/organization/project/issues/1/?referrer=AssignedActivityEmail
 
 
 Unsubscribe: javascript:alert("This is a preview page, what did you expect to happen?");

+ 6 - 6
tests/fixtures/emails/digest.txt

@@ -4,22 +4,22 @@ June 8, 2016, 7:25 a.m. UTC to July 4, 2016, 2:11 p.m. UTC
 Rule #1
 
 * CursusError: nibh curabitur (9729 events, 5901 users)
-  http://testserver/example/example/issues/9/
+  http://testserver/example/example/issues/9/?referrer=digest_email
 
 * CuraeError: pulvinar fames suspendisse erat integer ad magna (7555 events, 4549 users)
-  http://testserver/example/example/issues/15/
+  http://testserver/example/example/issues/15/?referrer=digest_email
 
 * erat pellentesque enim imperdiet tortor (3180 events, 276 users)
-  http://testserver/example/example/issues/16/
+  http://testserver/example/example/issues/16/?referrer=digest_email
 
 * NecVivamusError: consequat ipsum proin gravida inceptos scelerisque inceptos iaculis libero vulputate (2824 events, 1188 users)
-  http://testserver/example/example/issues/14/
+  http://testserver/example/example/issues/14/?referrer=digest_email
 
 * LectusDapibusTacitiError: semper porta curae luctus fermentum molestie praesent ac auctor (2358 events, 7906 users)
-  http://testserver/example/example/issues/2/
+  http://testserver/example/example/issues/2/?referrer=digest_email
 
 * VelTorquentError: porttitor praesent ridiculus (562 events, 8950 users)
-  http://testserver/example/example/issues/13/
+  http://testserver/example/example/issues/13/?referrer=digest_email
 
 
 

+ 1 - 1
tests/fixtures/emails/note.txt

@@ -9,6 +9,6 @@ metus volutpat
 
 ornare elit pulvinar nisl integer cum ad massa
 
-http://testserver/organization/project/issues/1/activity/
+http://testserver/organization/project/issues/1/activity/?referrer=NoteActivityEmail
 
 Unsubscribe: javascript:alert("This is a preview page, what did you expect to happen?");

Some files were not shown because too many files changed in this diff