mirror of
https://github.com/zulip/zulip.git
synced 2025-11-13 10:26:28 +00:00
queue_processor: Add langauge to the events added to invites queue.
This is a prep commit for adding realm-level default for various user settings. We add the language, in which the invite email will be sent, to the dict added to queue itself to avoid making queries in a loop when sending multiple emails from queue. We also handle the case for old events in the queue.
This commit is contained in:
@@ -6652,7 +6652,9 @@ def filter_presence_idle_user_ids(user_ids: Set[int]) -> List[int]:
|
||||
return sorted(idle_user_ids)
|
||||
|
||||
|
||||
def do_send_confirmation_email(invitee: PreregistrationUser, referrer: UserProfile) -> str:
|
||||
def do_send_confirmation_email(
|
||||
invitee: PreregistrationUser, referrer: UserProfile, email_language: str
|
||||
) -> str:
|
||||
"""
|
||||
Send the confirmation/welcome e-mail to an invited user.
|
||||
"""
|
||||
@@ -6667,7 +6669,7 @@ def do_send_confirmation_email(invitee: PreregistrationUser, referrer: UserProfi
|
||||
"zerver/emails/invitation",
|
||||
to_emails=[invitee.email],
|
||||
from_address=FromAddress.tokenized_no_reply_address(),
|
||||
language=referrer.realm.default_language,
|
||||
language=email_language,
|
||||
context=context,
|
||||
realm=referrer.realm,
|
||||
)
|
||||
@@ -6829,7 +6831,11 @@ def do_invite_users(
|
||||
stream_ids = [stream.id for stream in streams]
|
||||
prereg_user.streams.set(stream_ids)
|
||||
|
||||
event = {"prereg_id": prereg_user.id, "referrer_id": user_profile.id}
|
||||
event = {
|
||||
"prereg_id": prereg_user.id,
|
||||
"referrer_id": user_profile.id,
|
||||
"email_language": user_profile.realm.default_language,
|
||||
}
|
||||
queue_json_publish("invites", event)
|
||||
|
||||
if skipped:
|
||||
@@ -6951,6 +6957,7 @@ def do_resend_user_invite_email(prereg_user: PreregistrationUser) -> int:
|
||||
event = {
|
||||
"prereg_id": prereg_user.id,
|
||||
"referrer_id": prereg_user.referred_by.id,
|
||||
"email_language": prereg_user.referred_by.realm.default_language,
|
||||
}
|
||||
queue_json_publish("invites", event)
|
||||
|
||||
|
||||
@@ -442,6 +442,11 @@ class WorkerTest(ZulipTestCase):
|
||||
)
|
||||
data: List[Dict[str, Any]] = [
|
||||
dict(prereg_id=prereg_alice.id, referrer_id=inviter.id),
|
||||
dict(
|
||||
prereg_id=prereg_alice.id,
|
||||
referrer_id=inviter.id,
|
||||
email_language="en",
|
||||
),
|
||||
# Nonexistent prereg_id, as if the invitation was deleted
|
||||
dict(prereg_id=-1, referrer_id=inviter.id),
|
||||
]
|
||||
@@ -455,7 +460,7 @@ class WorkerTest(ZulipTestCase):
|
||||
"zerver.worker.queue_processors.send_future_email"
|
||||
) as send_mock:
|
||||
worker.start()
|
||||
self.assertEqual(send_mock.call_count, 1)
|
||||
self.assertEqual(send_mock.call_count, 2)
|
||||
|
||||
def test_error_handling(self) -> None:
|
||||
processed = []
|
||||
|
||||
@@ -424,7 +424,11 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
|
||||
logger.info(
|
||||
"Sending invitation for realm %s to %s", referrer.realm.string_id, invitee.email
|
||||
)
|
||||
activate_url = do_send_confirmation_email(invitee, referrer)
|
||||
if "email_language" in data:
|
||||
email_language = data["email_language"]
|
||||
else:
|
||||
email_language = referrer.realm.default_language
|
||||
activate_url = do_send_confirmation_email(invitee, referrer, email_language)
|
||||
|
||||
# queue invitation reminder
|
||||
if settings.INVITATION_LINK_VALIDITY_DAYS >= 4:
|
||||
@@ -440,7 +444,7 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
|
||||
referrer.realm,
|
||||
to_emails=[invitee.email],
|
||||
from_address=FromAddress.tokenized_no_reply_placeholder,
|
||||
language=referrer.realm.default_language,
|
||||
language=email_language,
|
||||
context=context,
|
||||
delay=datetime.timedelta(days=settings.INVITATION_LINK_VALIDITY_DAYS - 2),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user