From 8a24629ef6a9aa5138b3d17f5a00d374eba12006 Mon Sep 17 00:00:00 2001 From: Ed Woodward Date: Tue, 1 Dec 2020 13:51:37 -0600 Subject: [PATCH] Added dev email for additional info about redirect report --- mail/functions.py | 18 ++++++++++++++++++ mail/tests.py | 4 ++++ .../management/commands/check_redirects.py | 17 +++++++++++++++-- requirements/base.txt | 2 +- 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/mail/functions.py b/mail/functions.py index bbcd02e4c..a8884ca28 100644 --- a/mail/functions.py +++ b/mail/functions.py @@ -11,6 +11,24 @@ def send_redirect_report(bad_redirects): from_address = 'noreply@openstax.org' to_address = ['cmsupport@openstax.org', ] + try: + email = EmailMessage(subject, + msg, + from_address, + to_address) + email.send() + + except Exception as e: + logger.error("EMAIL FAILED TO SEND: subject:{}".format(subject)) + +def send_dev_email(email_subject, data_to_send): + msg = 'Dev Email - ' + email_subject + msg += '\n\n' + str(data_to_send) + + subject = email_subject + from_address = 'noreply@openstax.org' + to_address = ['bitdevs@openstax.org', ] + try: email = EmailMessage(subject, msg, diff --git a/mail/tests.py b/mail/tests.py index 45153904a..5481182ba 100644 --- a/mail/tests.py +++ b/mail/tests.py @@ -47,6 +47,10 @@ def test_send_redirect_report(self): redirects = self.create_fake_redirects() mail_func.send_redirect_report(redirects) + def test_send_dev_email(self): + redirects = self.create_fake_redirects() + mail_func.send_dev_email('Dev Email Test', redirects) + def create_fake_redirects(self): redirect = '/l/junk\thttps//:cnx.org\n' redirect += '/l/garbage\thttps://cnx.org/contents/HTmjSAcf@2.61:rrzms6rP@2/Introduction\n' diff --git a/redirects/management/commands/check_redirects.py b/redirects/management/commands/check_redirects.py index 30e6dc36b..14f3341b4 100644 --- a/redirects/management/commands/check_redirects.py +++ b/redirects/management/commands/check_redirects.py @@ -14,6 +14,7 @@ def handle(self, *args, **options): #get list of URLs redirects = Redirect.objects.all() bad_redirects = '' + dev_email_info = '' #Loop through and validate for re in redirects: @@ -22,9 +23,21 @@ def handle(self, *args, **options): # if bad one is found, add short URL and redirect to list if response.status_code != 200: bad_redirects += re.old_path + ',' + re.redirect_link + '\n' - except: + dev_email_info = self.add_to_dev_email(re, dev_email_info, response) + except Exception as e: bad_redirects += re.old_path + ',' + re.redirect_link + '\n' + dev_email_info = self.add_to_dev_email(re, dev_email_info, response, e) pass #email the list of bad URLs - mail.send_redirect_report(bad_redirects) \ No newline at end of file + mail.send_redirect_report(bad_redirects) + mail.send_dev_email('Redirect Report Additional Info',dev_email_info) + + def add_to_dev_email(self, redirect, dev_email_info, response, exception): + dev_email_info += redirect.old_path + ',' + redirect.redirect_link + ', code: ' + if response is not None: + dev_email_info += str(response.status_code) + ', headers: ' + str(response.headers) + if exception is not None: + dev_email_info += ', Exception: ' + str(exception) + dev_email_info += '\n\n' + return dev_email_info diff --git a/requirements/base.txt b/requirements/base.txt index 58ce801b8..77027978f 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -5,7 +5,7 @@ boto==2.49.0 boto3==1.14.51 botocore==1.17.51 CacheControl==0.12.5 -certifi==2019.11.28 +certifi==2020.11.8 chardet==3.0.4 cryptography==3.2 defusedxml==0.6.0