Skip to content
Open
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
13 changes: 11 additions & 2 deletions misc/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
logger = logging.getLogger(__name__)


def add_env_prefix_to_subject(subject: str) -> str:
"""Add environment prefix to email subject for dev/play environments."""
if settings.METACULUS_ENV in ["dev", "play"]:
return f"[{settings.METACULUS_ENV}] {subject}"
return subject


def filter_staff_emails(emails: list[str]) -> list:
"""
Filters only User.is_staff or *@metaculus.com emails
Expand All @@ -28,12 +35,14 @@ def filter_staff_emails(emails: list[str]) -> list:


@dramatiq.actor
def send_email_async(*args, recipient_list: list[str], **kwargs):
def send_email_async(*args, recipient_list: list[str], subject: str = "", **kwargs):
subject = add_env_prefix_to_subject(subject)

recipient_list = (
recipient_list
if settings.EMAIL_ALLOW_SEND_TO_ALL_USERS
else filter_staff_emails(recipient_list)
)

if recipient_list:
send_mail(*args, recipient_list=recipient_list, **kwargs)
send_mail(*args, recipient_list=recipient_list, subject=subject, **kwargs)
5 changes: 3 additions & 2 deletions misc/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
SidebarItemSerializer,
)
from .services.itn import remove_article
from .tasks import add_env_prefix_to_subject
from .utils import get_whitelist_status


Expand All @@ -32,7 +33,7 @@ def contact_api_view(request: Request):
serializer.is_valid(raise_exception=True)

EmailMessage(
subject=serializer.data["subject"] or "Contact Form",
subject=add_env_prefix_to_subject(serializer.data["subject"] or "Contact Form"),
body=serializer.data["message"],
from_email=settings.EMAIL_SENDER_NO_REPLY,
to=[settings.EMAIL_FEEDBACK],
Expand All @@ -49,7 +50,7 @@ def contact_service_api_view(request: Request):
serializer.is_valid(raise_exception=True)

EmailMessage(
subject="New form submission via Services page",
subject=add_env_prefix_to_subject("New form submission via Services page"),
body=(
f"Your name: {serializer.data.get('name')}\n"
f"Email address: {serializer.data['email']}\n"
Expand Down
13 changes: 7 additions & 6 deletions utils/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from django.contrib.contenttypes.models import ContentType
from django.core.mail import EmailMessage

from misc.tasks import add_env_prefix_to_subject
from questions.types import AggregationMethod
from utils.dramatiq import task_concurrent_limit
from utils.translation import (
Expand Down Expand Up @@ -59,7 +60,7 @@ def email_all_data_for_questions_task(
assert data is not None, "No data generated"

email = EmailMessage(
subject="Your Metaculus Data",
subject=add_env_prefix_to_subject("Your Metaculus Data"),
body="Attached is your Metaculus data.",
from_email=settings.EMAIL_SENDER_NO_REPLY,
to=[email_address],
Expand All @@ -69,7 +70,7 @@ def email_all_data_for_questions_task(

except Exception as e:
email = EmailMessage(
subject="Error generating Metaculus data",
subject=add_env_prefix_to_subject("Error generating Metaculus data"),
body="Error generating Metaculus data. Please contact an adminstrator "
f"for assistance.\nError: {e}",
from_email=settings.EMAIL_SENDER_NO_REPLY,
Expand Down Expand Up @@ -118,7 +119,7 @@ def email_data_task(
assert data is not None, "No data generated"

email = EmailMessage(
subject="Your Metaculus Data",
subject=add_env_prefix_to_subject("Your Metaculus Data"),
body="Attached is your Metaculus data.",
from_email=settings.EMAIL_SENDER_NO_REPLY,
to=[user_email],
Expand All @@ -128,7 +129,7 @@ def email_data_task(

except Exception as e:
email = EmailMessage(
subject="Error generating Metaculus data",
subject=add_env_prefix_to_subject("Error generating Metaculus data"),
body="Error generating Metaculus data. Please contact an adminstrator "
f"for assistance.\nError: {e}",
from_email=settings.EMAIL_SENDER_NO_REPLY,
Expand All @@ -153,7 +154,7 @@ def email_user_their_data_task(user_id: int):
assert data is not None, "No data generated"

email = EmailMessage(
subject="Your User Data",
subject=add_env_prefix_to_subject("Your User Data"),
body="Attached is your User Data on Metaculus.",
from_email=settings.EMAIL_SENDER_NO_REPLY,
to=[user_email],
Expand All @@ -163,7 +164,7 @@ def email_user_their_data_task(user_id: int):

except Exception as e:
email = EmailMessage(
subject="Error generating Metaculus data",
subject=add_env_prefix_to_subject("Error generating Metaculus data"),
body="Error generating Metaculus data. Please contact an adminstrator "
f"for assistance.\nError: {e}",
from_email=settings.EMAIL_SENDER_NO_REPLY,
Expand Down
Loading