Skip to content

Commit

Permalink
Use threading to send emails to avoid timeout problems
Browse files Browse the repository at this point in the history
  • Loading branch information
jayqi committed Jan 12, 2025
1 parent 35c6351 commit e5886d3
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions huntsite/teams/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import threading

from allauth.account.admin import EmailAddressAdmin as AllAuthEmailAddressAdmin
from allauth.account.models import EmailAddress
from django.contrib import admin
Expand Down Expand Up @@ -79,15 +81,23 @@ def icon_safe(self, obj):
@action_with_form(SendEmailAdminForm, description="Send email to selected email addresses")
def send_email_to_selected(modeladmin, request, queryset, data):
recipients = queryset.values_list("email", flat=True)
send_email(subject=data["subject"], message=data["message"], recipient_list=recipients)
thread = threading.Thread(
target=send_email,
kwargs=dict(subject=data["subject"], message=data["message"], recipient_list=recipients),
)
thread.start()
modeladmin.message_user(request, f"Email sent to selected {queryset.count()} addresses.")


@action_with_form(SendEmailAdminForm, description="Send email to all email addresses")
def send_email_to_all(modeladmin, request, data):
queryset = email_address_select_all_active()
recipients = queryset.values_list("email", flat=True)
send_email(subject=data["subject"], message=data["message"], recipient_list=recipients)
thread = threading.Thread(
target=send_email,
kwargs=dict(subject=data["subject"], message=data["message"], recipient_list=recipients),
)
thread.start()
modeladmin.message_user(request, f"Email sent to all ({queryset.count()}) addresses.")


Expand Down

0 comments on commit e5886d3

Please sign in to comment.