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)
|
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.
|
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",
|
"zerver/emails/invitation",
|
||||||
to_emails=[invitee.email],
|
to_emails=[invitee.email],
|
||||||
from_address=FromAddress.tokenized_no_reply_address(),
|
from_address=FromAddress.tokenized_no_reply_address(),
|
||||||
language=referrer.realm.default_language,
|
language=email_language,
|
||||||
context=context,
|
context=context,
|
||||||
realm=referrer.realm,
|
realm=referrer.realm,
|
||||||
)
|
)
|
||||||
@@ -6829,7 +6831,11 @@ def do_invite_users(
|
|||||||
stream_ids = [stream.id for stream in streams]
|
stream_ids = [stream.id for stream in streams]
|
||||||
prereg_user.streams.set(stream_ids)
|
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)
|
queue_json_publish("invites", event)
|
||||||
|
|
||||||
if skipped:
|
if skipped:
|
||||||
@@ -6951,6 +6957,7 @@ def do_resend_user_invite_email(prereg_user: PreregistrationUser) -> int:
|
|||||||
event = {
|
event = {
|
||||||
"prereg_id": prereg_user.id,
|
"prereg_id": prereg_user.id,
|
||||||
"referrer_id": prereg_user.referred_by.id,
|
"referrer_id": prereg_user.referred_by.id,
|
||||||
|
"email_language": prereg_user.referred_by.realm.default_language,
|
||||||
}
|
}
|
||||||
queue_json_publish("invites", event)
|
queue_json_publish("invites", event)
|
||||||
|
|
||||||
|
|||||||
@@ -442,6 +442,11 @@ class WorkerTest(ZulipTestCase):
|
|||||||
)
|
)
|
||||||
data: List[Dict[str, Any]] = [
|
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),
|
||||||
|
dict(
|
||||||
|
prereg_id=prereg_alice.id,
|
||||||
|
referrer_id=inviter.id,
|
||||||
|
email_language="en",
|
||||||
|
),
|
||||||
# Nonexistent prereg_id, as if the invitation was deleted
|
# Nonexistent prereg_id, as if the invitation was deleted
|
||||||
dict(prereg_id=-1, referrer_id=inviter.id),
|
dict(prereg_id=-1, referrer_id=inviter.id),
|
||||||
]
|
]
|
||||||
@@ -455,7 +460,7 @@ class WorkerTest(ZulipTestCase):
|
|||||||
"zerver.worker.queue_processors.send_future_email"
|
"zerver.worker.queue_processors.send_future_email"
|
||||||
) as send_mock:
|
) as send_mock:
|
||||||
worker.start()
|
worker.start()
|
||||||
self.assertEqual(send_mock.call_count, 1)
|
self.assertEqual(send_mock.call_count, 2)
|
||||||
|
|
||||||
def test_error_handling(self) -> None:
|
def test_error_handling(self) -> None:
|
||||||
processed = []
|
processed = []
|
||||||
|
|||||||
@@ -424,7 +424,11 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
|
|||||||
logger.info(
|
logger.info(
|
||||||
"Sending invitation for realm %s to %s", referrer.realm.string_id, invitee.email
|
"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
|
# queue invitation reminder
|
||||||
if settings.INVITATION_LINK_VALIDITY_DAYS >= 4:
|
if settings.INVITATION_LINK_VALIDITY_DAYS >= 4:
|
||||||
@@ -440,7 +444,7 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
|
|||||||
referrer.realm,
|
referrer.realm,
|
||||||
to_emails=[invitee.email],
|
to_emails=[invitee.email],
|
||||||
from_address=FromAddress.tokenized_no_reply_placeholder,
|
from_address=FromAddress.tokenized_no_reply_placeholder,
|
||||||
language=referrer.realm.default_language,
|
language=email_language,
|
||||||
context=context,
|
context=context,
|
||||||
delay=datetime.timedelta(days=settings.INVITATION_LINK_VALIDITY_DAYS - 2),
|
delay=datetime.timedelta(days=settings.INVITATION_LINK_VALIDITY_DAYS - 2),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user