Skip to content

Commit 90300a1

Browse files
sonus21sonu-zomato
authored andcommitted
Fixed issue in email subject.
1 parent 47c8dd9 commit 90300a1

10 files changed

Lines changed: 30 additions & 15 deletions

File tree

error_tracker/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@
66
# :license: BSD-3-Clause
77
#
88

9-
__version__ = '1.0'
9+
__version__ = '1.1.1'
1010
__author__ = 'Sonu Kumar'
1111
__email__ = 'sonunitw12@gmail.com'
1212

1313
from error_tracker.libs.mixins import *
1414
from error_tracker.flask import *
1515
from error_tracker.django import *
1616
from error_tracker.django.apps import DjangoErrorTracker
17+
from error_tracker.libs.exception_formatter import *
1718

1819
__all__ = [
1920
"AppErrorTracker", "DefaultFlaskContextBuilder",
2021
"NotificationMixin", "ModelMixin", "MaskingMixin",
2122
"ContextBuilderMixin", "TicketingMixin",
22-
"DefaultDjangoContextBuilder", "DjangoErrorTracker"
23+
"DefaultDjangoContextBuilder", "DjangoErrorTracker",
24+
"format_exception", "print_exception"
2325
]

error_tracker/flask/flask_error.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ def _set_notification_fields(self, recipients, send_notification, subject_prefix
152152

153153
if subject_prefix in [None, ""]:
154154
warn("APP_ERROR_SUBJECT_PREFIX is not set in the app config")
155+
else:
156+
self.notification_subject_prefix = subject_prefix
155157

156158
def teardown(self, exception):
157159
pass

error_tracker/libs/exception_formatter.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,11 @@ def format_exception(tb, max_elements=1000,
172172
return op
173173

174174

175-
def print_exception():
175+
def print_exception(masking=None, file=sys.stderr):
176176
"""
177177
Print traceback in formatted format
178178
:return: None
179179
"""
180180
ty, val, tb = sys.exc_info()
181-
string = format_exception(tb)
182-
print(string)
183-
traceback.print_tb(tb)
181+
string = format_exception(tb, masking=masking)
182+
print(string, file=file)

error_tracker/libs/utils.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,14 @@ def get_context_detail(request, masking, context_builder):
5252

5353

5454
def get_notification_subject(notification_subject_prefix, method, url, exception):
55-
if notification_subject_prefix:
56-
subject = "[%s][%s] %s" % (notification_subject_prefix, method, url)
57-
else:
55+
if notification_subject_prefix and method:
56+
subject = "[%s] [%s] %s" % (notification_subject_prefix, method, url)
57+
elif method:
5858
subject = "[%s] %s" % (method, url)
59+
else:
60+
subject = "[%s]" % notification_subject_prefix if notification_subject_prefix else ""
5961
if exception:
60-
subject = "[%s] %s" % (exception, subject)
62+
subject = "%s %s" % (subject, exception)
6163
return subject
6264

6365

examples/flask-sample/app.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,17 @@
88

99

1010
class Notifier(Mail, NotificationMixin):
11+
def __init__(self, *args, **kwargs):
12+
Mail.__init__(self, *args, **kwargs)
13+
NotificationMixin.__init__(self, *args, **kwargs)
14+
1115
def notify(self, request, exception,
1216
email_subject=None,
1317
email_body=None,
1418
from_email=None,
1519
recipient_list=None):
1620
message = Message(email_subject, recipient_list, email_body, sender=from_email)
17-
# send message
18-
# self.send(message)
21+
#self.send(message)
1922

2023

2124
class Ticketing(TicketingMixin):

tests/DjangoTest/DjangoTest/notification_settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22

33
APP_ERROR_RECIPIENT_EMAIL = ("test@example.com",)
44
APP_ERROR_EMAIL_SENDER = "sender@example.com"
5+
APP_ERROR_SUBJECT_PREFIX = "Server Error"

tests/DjangoTest/tests/test_notification.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@
99
import unittest
1010
from django.test import TestCase
1111
from util import TestBase
12+
from DjangoTest.notification_settings import APP_ERROR_SUBJECT_PREFIX
1213

1314

1415
class NotificationConfigurationTests(TestBase, TestCase):
1516
def test_email_send(self):
1617
self.get('/value-error')
17-
self.assertEqual(len(self.get_notifications()), 1)
18+
notifications = self.get_notifications()
19+
self.assertEqual(len(notifications), 1)
20+
self.assertTrue(APP_ERROR_SUBJECT_PREFIX in notifications[0][0])
1821
self.get('/value-error')
1922
self.assertEqual(len(self.get_notifications()), 2)
2023
self.post('/value-error')

tests/FlaskTest/configs/notification_config_enabled.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
APP_ERROR_SEND_NOTIFICATION = True
22
APP_ERROR_RECIPIENT_EMAIL = ["test@example.com", "test2@example.com"]
3-
APP_ERROR_SUBJECT_PREFIX = ""
3+
APP_ERROR_SUBJECT_PREFIX = "Server Error"
44
APP_ERROR_MASK_WITH = "**************"
55
APP_ERROR_MASKED_KEY_HAS = ("password", "secret")
66
APP_ERROR_URL_PREFIX = "/dev/error"

tests/FlaskTest/test_notification.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ def email_send(self):
4141
result = c.get('/value-error')
4242
self.assertEqual(u'500', result.data.decode('utf-8'))
4343
self.assertEqual(len(self.mailer.get_notifications()), 1)
44+
notification = self.mailer.get_notifications()[0]
45+
self.assertTrue(
46+
notification[0].startswith("[" + notification_config_enabled.APP_ERROR_SUBJECT_PREFIX + "]"))
4447
c.get('/value-error')
4548
self.assertEqual(len(self.mailer.get_notifications()), 2)
4649

tests/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def notify(self, request, exception,
6060
email_body=None,
6161
from_email=None,
6262
recipient_list=None):
63-
self.emails.append(email_body)
63+
self.emails.append((email_subject, email_body))
6464

6565
def clear(self):
6666
self.emails = []

0 commit comments

Comments
 (0)