diff --git a/src/sentry/templates/sentry/debug/mail/preview.html b/src/sentry/templates/sentry/debug/mail/preview.html new file mode 100644 index 00000000000000..52328fa3d3939c --- /dev/null +++ b/src/sentry/templates/sentry/debug/mail/preview.html @@ -0,0 +1,8 @@ + + + Mail Preview + + + {{ preview.html_body }} + + diff --git a/src/sentry/web/frontend/debug/__init__.py b/src/sentry/web/frontend/debug/__init__.py new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/src/sentry/web/frontend/debug/mail.py b/src/sentry/web/frontend/debug/mail.py new file mode 100644 index 00000000000000..e47fccf70a2609 --- /dev/null +++ b/src/sentry/web/frontend/debug/mail.py @@ -0,0 +1,61 @@ +from django.utils.safestring import mark_safe + +from sentry.models import Event, Group, Project, Team +from sentry.web.helpers import render_to_response, render_to_string + + +# TODO(dcramer): use https://github.com/disqus/django-mailviews +class MailPreview(object): + def __init__(self, html_template, text_template, context): + self.html_template = html_template + self.text_template = text_template + self.context = context + + def text_body(self): + return render_to_string(self.text_template, self.context) + + def html_body(self): + return render_to_string(self.html_template, self.context) + + +def new_event(request): + team = Team( + slug='example', + ) + project = Project( + slug='example', + team=team, + ) + group = Group( + project=project, + message='This is an example event.', + ) + + event = Event( + project=project, + group=group, + message=group.message, + ) + + interface_list = [] + for interface in event.interfaces.itervalues(): + body = interface.to_email_html(event) + if not body: + continue + interface_list.append((interface.get_title(), mark_safe(body))) + + preview = MailPreview( + html_template='sentry/emails/error.html', + text_template='sentry/emails/error.html', + context={ + 'group': group, + 'event': event, + 'link': '#link', + 'interfaces': interface_list, + 'settings_link': '#settings-link', + }, + ) + + return render_to_response('sentry/debug/mail/preview.html', { + 'preview': preview, + }) diff --git a/src/sentry/web/urls.py b/src/sentry/web/urls.py index 5f029ef2b04a04..e23b42805f9197 100644 --- a/src/sentry/web/urls.py +++ b/src/sentry/web/urls.py @@ -14,6 +14,8 @@ # django < 1.5 compat from django.conf.urls.defaults import include, patterns, url # NOQA +from django.conf import settings + from sentry.web import api from sentry.web.frontend import ( alerts, accounts, generic, groups, events, @@ -45,7 +47,17 @@ def init_all_applications(): init_all_applications() -urlpatterns = patterns('', +urlpatterns = patterns('') + +if settings.DEBUG: + import sentry.web.frontend.debug.mail + + urlpatterns += patterns('', + url(r'^debug/mail/new-event/$', + sentry.web.frontend.debug.mail.new_event), + ) + +urlpatterns += patterns('', url(r'^_static/(?P[^/]+)/(?P.*)$', generic.static_media, name='sentry-media'),