send_email: Add support for passing language into send_future_email.

This adds language paramater to send_future_email. As a result, this
properly internationalizes invitation reminder emails, by passing
correct language into send_future_email.

Fixes #11240.
This commit is contained in:
Raymond Akornor
2019-01-09 23:10:44 +00:00
committed by Tim Abbott
parent b9f7b08af2
commit 254bf4c08f
3 changed files with 7 additions and 6 deletions

View File

@@ -267,6 +267,5 @@ def handle_digest_email(user_profile_id: int, cutoff: float,
logger.info("Sending digest email for %s" % (user_profile.email,))
# Send now, as a ScheduledEmail
send_future_email('zerver/emails/digest', user_profile.realm, to_user_ids=[user_profile.id],
from_name="Zulip Digest", from_address=FromAddress.NOREPLY,
context=context)
from_name="Zulip Digest", from_address=FromAddress.NOREPLY, context=context)
return None

View File

@@ -125,8 +125,8 @@ def send_email_from_dict(email_dict: Mapping[str, Any]) -> None:
def send_future_email(template_prefix: str, realm: Realm, to_user_ids: Optional[List[int]]=None,
to_emails: Optional[List[str]]=None, from_name: Optional[str]=None,
from_address: Optional[str]=None, context: Dict[str, Any]={},
delay: datetime.timedelta=datetime.timedelta(0)) -> None:
from_address: Optional[str]=None, language: Optional[str]=None,
context: Dict[str, Any]={}, delay: datetime.timedelta=datetime.timedelta(0)) -> None:
# WARNING: Be careful when using this with multiple recipients;
# because the current ScheduledEmail model (used primarily for
# cancelling planned emails) does not support multiple recipients,
@@ -139,11 +139,12 @@ def send_future_email(template_prefix: str, realm: Realm, to_user_ids: Optional[
# above problem is not relevant.
template_name = template_prefix.split('/')[-1]
email_fields = {'template_prefix': template_prefix, 'to_user_ids': to_user_ids, 'to_emails': to_emails,
'from_name': from_name, 'from_address': from_address, 'context': context}
'from_name': from_name, 'from_address': from_address, 'language': language,
'context': context}
if settings.DEVELOPMENT_LOG_EMAILS:
send_email(template_prefix, to_user_ids=to_user_ids, to_emails=to_emails, from_name=from_name,
from_address=from_address, context=context)
from_address=from_address, language=language, context=context)
# For logging the email
assert (to_user_ids is None) ^ (to_emails is None)

View File

@@ -234,6 +234,7 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
referrer.realm,
to_emails=[invitee.email],
from_address=FromAddress.tokenized_no_reply_address(),
language=referrer.realm.default_language,
context=context,
delay=datetime.timedelta(days=2))