diff --git a/CHANGELOG.md b/CHANGELOG.md index a0f6d44..f7da7f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to - ✨(frontend) feature modal add new access role to domain - ✨(api) allow invitations for domain management #708 +### Fixed + +- 🐛(mailbox) fix mailbox creation email language + ## [1.13.1] - 2025-03-04 ### Fixed diff --git a/src/backend/mailbox_manager/api/client/serializers.py b/src/backend/mailbox_manager/api/client/serializers.py index 2f12ec6..e224cf1 100644 --- a/src/backend/mailbox_manager/api/client/serializers.py +++ b/src/backend/mailbox_manager/api/client/serializers.py @@ -55,7 +55,9 @@ class MailboxSerializer(serializers.ModelSerializer): # send confirmation email client.notify_mailbox_creation( - recipient=mailbox.secondary_email, mailbox_data=response.json() + recipient=mailbox.secondary_email, + mailbox_data=response.json(), + issuer=self.context["request"].user, ) # actually save mailbox on our database diff --git a/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py b/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py index 2a24d1c..9863228 100644 --- a/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py +++ b/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py @@ -790,10 +790,14 @@ def test_api_mailboxes__sends_new_mailbox_notification(mock_info): Creating a new mailbox should send confirmation email to secondary email. """ - access = factories.MailDomainAccessFactory(role=enums.MailDomainRoleChoices.OWNER) + user = core_factories.UserFactory(language="fr-fr") + access = factories.MailDomainAccessFactory( + user=user, + role=enums.MailDomainRoleChoices.OWNER, + ) client = APIClient() - client.force_login(access.user) + client.force_login(user) mailbox_data = serializers.MailboxSerializer( factories.MailboxFactory.build(domain=access.domain) ).data @@ -824,7 +828,10 @@ def test_api_mailboxes__sends_new_mailbox_notification(mock_info): ) assert mock_send.call_count == 1 - assert mock_send.mock_calls[0][1][0] == "Your new mailbox information" + assert ( + "Informations sur votre nouvelle boîte mail" + in mock_send.mock_calls[0][1][1] + ) assert mock_send.mock_calls[0][1][3][0] == mailbox_data["secondary_email"] expected_messages = { diff --git a/src/backend/mailbox_manager/utils/dimail.py b/src/backend/mailbox_manager/utils/dimail.py index 90387ec..fbe85ab 100644 --- a/src/backend/mailbox_manager/utils/dimail.py +++ b/src/backend/mailbox_manager/utils/dimail.py @@ -13,6 +13,7 @@ from django.contrib.sites.models import Site from django.core import exceptions, mail from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ +from django.utils.translation import override import requests from rest_framework import status @@ -258,31 +259,29 @@ class DimailAPIClient: f"{error_content.get('detail') or error_content}" ) - def notify_mailbox_creation(self, recipient, mailbox_data): + def notify_mailbox_creation(self, recipient, mailbox_data, issuer=None): """ Send email to confirm mailbox creation and send new mailbox information. """ - - template_vars = { - "title": _("Your new mailbox information"), - "site": Site.objects.get_current(), - "webmail_url": settings.WEBMAIL_URL, - "mailbox_data": mailbox_data, - } - - msg_html = render_to_string("mail/html/new_mailbox.html", template_vars) - msg_plain = render_to_string("mail/text/new_mailbox.txt", template_vars) - try: - mail.send_mail( - template_vars["title"], - msg_plain, - settings.EMAIL_FROM, - [recipient], - html_message=msg_html, - fail_silently=False, - ) + with override(issuer.language if issuer else settings.LANGUAGE_CODE): + template_vars = { + "title": _("Your new mailbox information"), + "site": Site.objects.get_current(), + "webmail_url": settings.WEBMAIL_URL, + "mailbox_data": mailbox_data, + } + msg_html = render_to_string("mail/html/new_mailbox.html", template_vars) + msg_plain = render_to_string("mail/text/new_mailbox.txt", template_vars) + mail.send_mail( + template_vars["title"], + msg_plain, + settings.EMAIL_FROM, + [recipient], + html_message=msg_html, + fail_silently=False, + ) logger.info( "Information for mailbox %s sent to %s.", mailbox_data["email"], diff --git a/src/backend/people/settings.py b/src/backend/people/settings.py index fd96c62..5906d90 100755 --- a/src/backend/people/settings.py +++ b/src/backend/people/settings.py @@ -136,7 +136,11 @@ class Base(Configuration): # https://docs.djangoproject.com/en/3.1/topics/i18n/ # Languages - LANGUAGE_CODE = values.Value("en-us") + LANGUAGE_CODE = values.Value( + default="en-us", + environ_name="LANGUAGE_CODE", + environ_prefix=None, + ) DRF_NESTED_MULTIPART_PARSER = { # output of parser is converted to querydict