diff --git a/misc/tasks.py b/misc/tasks.py index 93762c7d74..2c0e517941 100644 --- a/misc/tasks.py +++ b/misc/tasks.py @@ -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 @@ -28,7 +35,9 @@ 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 @@ -36,4 +45,4 @@ def send_email_async(*args, recipient_list: list[str], **kwargs): ) if recipient_list: - send_mail(*args, recipient_list=recipient_list, **kwargs) + send_mail(*args, recipient_list=recipient_list, subject=subject, **kwargs) diff --git a/misc/views.py b/misc/views.py index ce428de8c3..c80029a0b7 100644 --- a/misc/views.py +++ b/misc/views.py @@ -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 @@ -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], @@ -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" diff --git a/utils/tasks.py b/utils/tasks.py index 9be835f77f..f8e2684f40 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -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 ( @@ -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], @@ -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, @@ -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], @@ -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, @@ -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], @@ -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,