[damned-lies] Refs #216 - Ensured mail language override works with Chinese too



commit 46899d5a763ce41ce788b895fcacc1fc8fc8aa2b
Author: Claude Paroz <claude 2xlibre net>
Date:   Sun Mar 21 19:15:00 2021 +0100

    Refs #216 - Ensured mail language override works with Chinese too

 vertimus/models.py      |  7 +++++--
 vertimus/tests/tests.py | 15 ++++++++++++++-
 2 files changed, 19 insertions(+), 3 deletions(-)
---
diff --git a/vertimus/models.py b/vertimus/models.py
index 532d12d5..3dc51eda 100644
--- a/vertimus/models.py
+++ b/vertimus/models.py
@@ -9,7 +9,9 @@ from django.db.models import Max, Q
 from django.db.models.signals import post_save, pre_delete
 from django.dispatch import receiver
 from django.urls import reverse
-from django.utils.translation import override, gettext, gettext_noop, gettext_lazy as _
+from django.utils.translation import (
+    override, gettext, gettext_noop, gettext_lazy as _, to_language
+)
 
 from common.utils import run_shell_command, send_mail
 from stats.models import Branch, Domain, Statistics, PoFile, UnableToCommit
@@ -551,7 +553,8 @@ class Action(ActionAbstract):
                 state.domain.name,
                 state.language.locale)))
         subject = state.branch.module.name + ' - ' + state.branch.name
-        with override(Language.django_locale(state.language.locale)):
+        # to_language may be unnecessary after https://code.djangoproject.com/ticket/32581 is solved
+        with override(to_language(Language.django_locale(state.language.locale))):
             message = gettext("Hello,") + "\n\n" + gettext(self.default_message) + "\n%(url)s\n\n"
             message = message % {
                 'module': state.branch.module.name,
diff --git a/vertimus/tests/tests.py b/vertimus/tests/tests.py
index e857c4e9..7e89dc7e 100644
--- a/vertimus/tests/tests.py
+++ b/vertimus/tests/tests.py
@@ -8,6 +8,7 @@ from xml.dom.minidom import parseString
 from django.conf import settings
 from django.core.files.base import File, ContentFile
 from django.core.files.uploadedfile import SimpleUploadedFile
+from django.core.management import call_command
 from django.core import mail
 from django.http import QueryDict
 from django.test import TestCase
@@ -15,8 +16,9 @@ from django.test.utils import override_settings
 from django.urls import reverse
 from django.utils.datastructures import MultiValueDict
 
+from languages.models import Language
 from people.models import Person
-from teams.models import Role
+from teams.models import Role, Team
 from teams.tests import TeamsAndRolesMixin
 from stats.models import Module, Branch, Release, Category, CategoryName, Domain, Statistics
 from stats.tests.tests import TestModuleBase
@@ -274,6 +276,17 @@ class VertimusTest(TeamsAndRolesMixin, TestCase):
         self.assertIn("Hi again!", mail.outbox[0].body)
         self.assertEqual(mail.outbox[0].extra_headers, {settings.EMAIL_HEADER_NAME: 'Inactive'})
 
+    def test_send_mail_translated(self):
+        team = Team.objects.create(name='zh', description='Chinese', mailing_list='zh example org')
+        zh_CN = Language.objects.create(name='Chinese', locale='zh_CN', team=team)
+        call_command('compile-trans', locale='zh_CN')
+
+        state = StateNone(branch=self.b, domain=self.d, language=zh_CN)
+        action = Action.new_by_name('WC', person=self.pn)
+        action.apply_on(state, {'send_to_ml': True, 'comment': "Comment"})
+        self.assertEqual(len(mail.outbox), 1)
+        self.assertIn("您好,", mail.outbox[0].body)
+
     def test_action_rt(self):
         state = StateNone(branch=self.b, domain=self.d, language=self.l)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]