Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions backend/.env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
DEBUG=True
SECRET_KEY=

# Auth0 Configuration
# Set to True to get debug logs (Django, SQL queries, HTTP requests, service logs, etc.) in console
DEBUG="True"
# Set to True to indicate production environment. Sends emails to the listservs (CAUTION!!!)
# If False, all emails are sent only to the current user
PROD="False"
# Set to True to turn on email sending
# If False, DEBUG should be True to see emails printed in console
SEND_EMAIL="False"

# Auth0
ALLOWED_HOSTS=
AUTH0_DOMAIN=
AUTH0_AUDIENCE=

# Database Configuration
# Database
DATABASE_URL=""
TEST_DATABASE_URL=""
TEST_DATABASE_URL=""

# Mailjet
MAILJET_PUBLIC_KEY=""
MAILJET_PRIVATE_KEY=""
2 changes: 2 additions & 0 deletions backend/config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = os.getenv("DEBUG", "False").lower() == "true"
PROD = os.getenv("PROD", "False").lower() == "true"
SEND_EMAIL = os.getenv("SEND_EMAIL", "False").lower() == "true"

ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "").split(",")

Expand Down
27 changes: 16 additions & 11 deletions backend/hoagiemail/api/mail_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ def print_debug(message, schedule=None):
"""Prints email contents for debugging purposes"""
logger.debug("Email:")
logger.debug(f"From: {message['From']['Name']} <{message['From']['Email']}>")
logger.debug(f"ReplyTo: {message['ReplyTo']['Name']} <{message['ReplyTo']['Email']}>")
logger.debug(f"To: {message['To'][0]['Email']}")
logger.debug(f"Subject: {message['Subject']}")
logger.debug(f"Body: {message['TextPart']}")
Expand All @@ -149,20 +150,26 @@ def print_debug(message, schedule=None):

def send_email(mail_data, sender_email):
"""Sends email using Mailjet API"""
# Create the message with actual content
if mail_data["schedule"] != "test":
message = create_message(mail_data, sender_email, HOAGIE_EMAIL)
message["Cc"] = get_listservs()
actual_message = create_message(mail_data, sender_email, HOAGIE_EMAIL)
actual_message["Cc"] = get_listservs()
else:
message = create_message(mail_data, sender_email, sender_email)
actual_message = create_message(mail_data, sender_email, sender_email)

# In debug mode, print email contents instead of sending
if settings.DEBUG:
print_debug(message)
print_debug(actual_message)

if not settings.SEND_EMAIL:
return

# Send email only to self if not in production
to_send = actual_message
if not settings.PROD and mail_data["schedule"] != "test":
to_send = create_message(mail_data, sender_email, sender_email)

# Send email via Mailjet
mailjet = get_mailjet_client()
result = mailjet.send.create(data={"Messages": [message]})
result = mailjet.send.create(data={"Messages": [to_send]})

result_status = result.status_code
if result_status == 200:
Expand Down Expand Up @@ -200,10 +207,8 @@ def handle_scheduled_email(mail_data, user):
return "You already have an email scheduled for this time. If you would like to change your message, please \
delete your mail in the Scheduled Emails page and try again."

if settings.DEBUG:
message = create_message(mail_data, user.email, HOAGIE_EMAIL)
print_debug(message, schedule=schedule_time_et)
return
message = create_message(mail_data, user.email, HOAGIE_EMAIL)
print_debug(message, schedule=schedule_time_et)

# Create scheduled email
ScheduledEmail.objects.create(
Expand Down