From 16573d31843b0fd0a714626ff194cd3dd4fa9ea2 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Wed, 13 Mar 2019 09:35:02 -0500
Subject: [PATCH] Implement django-ses email backend for AWS deployment

---
 Dockerfile                        |  2 ++
 config/settings/base.py           |  1 +
 config/settings/container/base.py | 18 +++++++++---------
 requirements.txt                  |  2 ++
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 00644437a..81f607d7a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -95,6 +95,8 @@ RUN DJANGO_SETTINGS_MODULE=${SETTINGS_MODULE} \
     LVALERT_OVERSEER_PORT=2 \
     DJANGO_TWILIO_ACCOUNT_SID=fake_sid \
     DJANGO_TWILIO_AUTH_TOKEN=fake_token \
+    AWS_SES_ACCESS_KEY_ID=fake_aws_id \
+    AWS_SES_SECRET_ACCESS_KEY=fake_aws_key \
     python manage.py collectstatic --noinput
 
 RUN rm -rf /app/logs/* /app/project_data/*
diff --git a/config/settings/base.py b/config/settings/base.py
index ec4caa651..2aff59eb1 100644
--- a/config/settings/base.py
+++ b/config/settings/base.py
@@ -337,6 +337,7 @@ SITE_ID=1
 INSTALLED_APPS = [
     'django.contrib.auth',
     'django.contrib.admin',
+    'django_ses',
     'django.contrib.contenttypes',
     'user_sessions',
     'django.contrib.sites',
diff --git a/config/settings/container/base.py b/config/settings/container/base.py
index 545ec21dd..6836614f4 100644
--- a/config/settings/container/base.py
+++ b/config/settings/container/base.py
@@ -62,15 +62,15 @@ if TWILIO_AUTH_TOKEN is None:
     raise ImproperlyConfigured('Could not get Twilio auth token from envvars.')
 
 # Get email settings from environment
-EMAIL_PORT = 587
-EMAIL_USE_TLS = True
-EMAIL_HOST = os.environ.get('SMTP_HOST', 'localhost')
-EMAIL_HOST_USER = os.environ.get('SMTP_USERNAME', '')
-EMAIL_HOST_PASSWORD = os.environ.get('SMTP_PASSWORD', '')
-ALERT_EMAIL_FROM = os.environ.get('DJANGO_ALERT_EMAIL_FROM', None)
-if ALERT_EMAIL_FROM is None:
-    raise ImproperlyConfigured(
-        "Could not get 'alert from email' from envvars.")
+EMAIL_BACKEND = 'django_ses.SESBackend'
+AWS_SES_ACCESS_KEY_ID = get_from_env('AWS_SES_ACCESS_KEY_ID')
+AWS_SES_SECRET_ACCESS_KEY = get_from_env('AWS_SES_SECRET_ACCESS_KEY')
+AWS_SES_REGION_NAME = get_from_env('AWS_SES_REGION_NAME',
+    default_value='us-west-2', fail_if_not_found=False)
+AWS_SES_REGION_ENDPOINT = get_from_env('AWS_SES_REGION_ENDPOINT',
+    default_value='email.us-west-2.amazonaws.com', fail_if_not_found=False)
+ALERT_EMAIL_FROM = get_from_env('DJANGO_ALERT_EMAIL_FROM')
+
 
 # Database settings -----------------------------------------------------------
 DATABASES = {
diff --git a/requirements.txt b/requirements.txt
index d5f2aa8c4..fc1f3f7fb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,6 +4,7 @@ django-debug-toolbar==1.9.1
 django-extensions==2.0.5
 django-guardian==1.4.9
 django-model-utils==3.1.1
+django-ses
 django-silk==3.0.1
 django-twilio==0.9.0
 django-user-sessions==1.6.0
@@ -35,3 +36,4 @@ twilio==6.10.3
 # https://github.com/etingof/pyasn1/issues/112
 pyasn1==0.3.6
 pyasn1-modules==0.1.5
+pytz==2018.9
-- 
GitLab