Skip to content

Commit 9298d6f

Browse files
Merge pull request #1834 from IFRCGo/feature/auto-translation
Feature/auto translation
2 parents b4bb881 + 8410695 commit 9298d6f

37 files changed

+2762
-160
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- run:
2727
name: Run tests
2828
command: |
29-
docker-compose run --rm serve ./manage.py test --keepdb -v 2 --pattern="test_fake.py" &&
29+
time docker-compose run --rm serve ./manage.py test --keepdb -v 2 --pattern="test_fake.py" &&
3030
docker-compose run --rm serve pytest --reuse-db --durations=10
3131
- run:
3232
name: Push image to Docker Hub

api/drf_views.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
from django.db import models
1414
from django.db.models import Prefetch, Count, Q, OuterRef
1515
from django.utils import timezone
16+
from django.utils.translation import get_language as django_get_language
1617

1718
from main.utils import is_tableau
19+
from main.translation import TRANSLATOR_ORIGINAL_LANGUAGE_FIELD_NAME
1820
from deployments.models import Personnel
1921
from databank.serializers import CountryOverviewSerializer
2022

@@ -1000,7 +1002,9 @@ def save_meta(self, fieldreport, meta, is_update=False):
10001002
for action_taken in meta["actions_taken"]:
10011003
actions = action_taken["actions"]
10021004
del action_taken["actions"]
1005+
action_taken[TRANSLATOR_ORIGINAL_LANGUAGE_FIELD_NAME] = django_get_language()
10031006
actions_taken = ActionsTaken.objects.create(field_report=fieldreport, **action_taken)
1007+
CreateFieldReportSerializer.trigger_field_translation(actions_taken)
10041008
actions_taken.actions.add(*actions)
10051009

10061010
if "contacts" in meta:
@@ -1030,7 +1034,9 @@ def create_event(self, report):
10301034
auto_generated=True,
10311035
auto_generated_source=SOURCES["new_report"],
10321036
visibility=report.visibility,
1037+
**{TRANSLATOR_ORIGINAL_LANGUAGE_FIELD_NAME: django_get_language()},
10331038
)
1039+
CreateFieldReportSerializer.trigger_field_translation(event)
10341040
report.event = event
10351041
report.save()
10361042
return event
@@ -1049,7 +1055,10 @@ def create(self, request, *args, **kwargs):
10491055

10501056
try:
10511057
# TODO: Use serializer to create fieldreport
1052-
fieldreport = FieldReport.objects.create(**data)
1058+
data[TRANSLATOR_ORIGINAL_LANGUAGE_FIELD_NAME] = django_get_language()
1059+
fieldreport = FieldReport.objects.create(
1060+
**data,
1061+
)
10531062
CreateFieldReportSerializer.trigger_field_translation(fieldreport)
10541063
except Exception as e:
10551064
try:

api/migrations/0163_auto_20230410_0720.py

Lines changed: 253 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Generated by Django 3.2.18 on 2023-04-19 05:24
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0163_admin2_is_deprecated'),
10+
('api', '0163_auto_20230410_0720'),
11+
]
12+
13+
operations = [
14+
]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Generated by Django 3.2.18 on 2023-06-14 08:04
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0163_auto_20230410_0720'),
10+
('api', '0169_auto_20230425_1120'),
11+
]
12+
13+
operations = [
14+
]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Generated by Django 3.2.18 on 2023-06-14 08:18
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0164_merge_20230419_0524'),
10+
('api', '0170_merge_0163_auto_20230410_0720_0169_auto_20230425_1120'),
11+
]
12+
13+
operations = [
14+
]

api/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,6 +1151,7 @@ class Meta:
11511151
'disaster_start_date', 'created_at', 'appeals',
11521152
)
11531153

1154+
11541155
class CountryOfFieldReportToReviewSerializer(ModelSerializer):
11551156
class Meta:
11561157
model = CountryOfFieldReportToReview

api/snapshots/snap_test_views.py

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,35 +40,40 @@
4040
"thumbnail": None,
4141
"file": None,
4242
"title": "event-featured-document-title-UEWunxuAcKoVjbqJLLUAsjmvoyKpFJPRvqWFUPVFDkUYwkiUIF",
43-
"description": "event-featured-document-description-lIPdHceQdWaAiOoeTjanGDxdNOQNEQFbaIJAabHUrIsbGSRBZlggHjpmNHqwrYzfxzDKpSotRfPPWcfzyyJEdOaSkfFBPYvKgHco"
43+
"description": "event-featured-document-description-lIPdHceQdWaAiOoeTjanGDxdNOQNEQFbaIJAabHUrIsbGSRBZlggHjpmNHqwrYzfxzDKpSotRfPPWcfzyyJEdOaSkfFBPYvKgHco",
44+
"translation_module_original_language": "en"
4445
},
4546
{
4647
"id": 4,
4748
"thumbnail": None,
4849
"file": None,
4950
"title": "event-featured-document-title-pnegMcCMRTdpVczCoInWXdiGsoUKuKMXRuptjQHoAtrdJLVlOR",
50-
"description": "event-featured-document-description-BJFdwPQyYHuSAAjtylWIEpotTjZDdJAAJHiypqnvPfCxfIUmdryRMMcemZWLUQJnEnvtanmVhVWEpSMTnzpJuXsyDIPwtqxGFDgZ"
51+
"description": "event-featured-document-description-BJFdwPQyYHuSAAjtylWIEpotTjZDdJAAJHiypqnvPfCxfIUmdryRMMcemZWLUQJnEnvtanmVhVWEpSMTnzpJuXsyDIPwtqxGFDgZ",
52+
"translation_module_original_language": "en"
5153
},
5254
{
5355
"id": 3,
5456
"thumbnail": None,
5557
"file": None,
5658
"title": "event-featured-document-title-ShOsxNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHC",
57-
"description": "event-featured-document-description-hRnTLFfGCZdDiGADKdJDRZtUbzqaVnLecBwSeIdeEcsAlXiXPUPAxyCyyfRQIiPwhlIzHiUoaWbtDRUIBIyopDwjrmUWhcZQANXb"
59+
"description": "event-featured-document-description-hRnTLFfGCZdDiGADKdJDRZtUbzqaVnLecBwSeIdeEcsAlXiXPUPAxyCyyfRQIiPwhlIzHiUoaWbtDRUIBIyopDwjrmUWhcZQANXb",
60+
"translation_module_original_language": "en"
5861
},
5962
{
6063
"id": 2,
6164
"thumbnail": None,
6265
"file": None,
6366
"title": "event-featured-document-title-qVEnmIrJSrigNVLppdQHoOodgAvTEgRXiaJkAPEEPmWsusPdXf",
64-
"description": "event-featured-document-description-PKoIVUclAlczYFlVscatKMgvsDPIHFiGDrmZhvkUDPqTlaVvYsKRWmlNOzBGufzQgliEupaqypCWrvtLUKaqPxSpdQhDtkzRGTXt"
67+
"description": "event-featured-document-description-PKoIVUclAlczYFlVscatKMgvsDPIHFiGDrmZhvkUDPqTlaVvYsKRWmlNOzBGufzQgliEupaqypCWrvtLUKaqPxSpdQhDtkzRGTXt",
68+
"translation_module_original_language": "en"
6569
},
6670
{
6771
"id": 1,
6872
"thumbnail": None,
6973
"file": None,
7074
"title": "event-featured-document-title-ZEHDjMGiuNukzNVtLvGGIFTKtEbxvRhALtYUSObMEqPYXLKoUd",
71-
"description": "event-featured-document-description-LEkHOUNXyjRpcKShmbCuAjASnAGXNEVUdTiHnJuQEHyulDIvIwRXURPZSqNEmprJtotXsTnSTFuEwJYUrshKRIyzwXZjscsTfwCP"
75+
"description": "event-featured-document-description-LEkHOUNXyjRpcKShmbCuAjASnAGXNEVUdTiHnJuQEHyulDIvIwRXURPZSqNEmprJtotXsTnSTFuEwJYUrshKRIyzwXZjscsTfwCP",
76+
"translation_module_original_language": "en"
7277
}
7378
],
7479
"links": [],
@@ -77,7 +82,8 @@
7782
"response_activity_count": 0,
7883
"visibility": 3,
7984
"name": "event-OhbVrpoiVgRVIfLBcbfnoGMbJmTPSIAoCLrZaWZkSBvrjnWvgf",
80-
"slug": "ygwwmqzcudihyfjsonxkmtecqoxsfogyrdoxkxwnqrsrpemoki"
85+
"slug": "ygwwmqzcudihyfjsonxkmtecqoxsfogyrdoxkxwnqrsrpemoki",
86+
"translation_module_original_language": "en"
8187
}
8288

8389
snapshots['EventSnaphostTest::test_event_link_api 1'] = {
@@ -113,37 +119,43 @@
113119
"id": 5,
114120
"url": "",
115121
"description": "event-link-description-lIPdHceQdWaAiOoeTjanGDxdNOQNEQFbaIJAabHUrIsbGSRBZlggHjpmNHqwrYzfxzDKpSotRfPPWcfzyyJEdOaSkfFBPYvKgHco",
116-
"title": "event-link-title-UEWunxuAcKoVjbqJLLUAsjmvoyKpFJPRvqWFUPVFDkUYwkiUIF"
122+
"title": "event-link-title-UEWunxuAcKoVjbqJLLUAsjmvoyKpFJPRvqWFUPVFDkUYwkiUIF",
123+
"translation_module_original_language": "en"
117124
},
118125
{
119126
"id": 4,
120127
"url": "",
121128
"description": "event-link-description-BJFdwPQyYHuSAAjtylWIEpotTjZDdJAAJHiypqnvPfCxfIUmdryRMMcemZWLUQJnEnvtanmVhVWEpSMTnzpJuXsyDIPwtqxGFDgZ",
122-
"title": "event-link-title-pnegMcCMRTdpVczCoInWXdiGsoUKuKMXRuptjQHoAtrdJLVlOR"
129+
"title": "event-link-title-pnegMcCMRTdpVczCoInWXdiGsoUKuKMXRuptjQHoAtrdJLVlOR",
130+
"translation_module_original_language": "en"
123131
},
124132
{
125133
"id": 3,
126134
"url": "",
127135
"description": "event-link-description-hRnTLFfGCZdDiGADKdJDRZtUbzqaVnLecBwSeIdeEcsAlXiXPUPAxyCyyfRQIiPwhlIzHiUoaWbtDRUIBIyopDwjrmUWhcZQANXb",
128-
"title": "event-link-title-ShOsxNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHC"
136+
"title": "event-link-title-ShOsxNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHC",
137+
"translation_module_original_language": "en"
129138
},
130139
{
131140
"id": 2,
132141
"url": "",
133142
"description": "event-link-description-PKoIVUclAlczYFlVscatKMgvsDPIHFiGDrmZhvkUDPqTlaVvYsKRWmlNOzBGufzQgliEupaqypCWrvtLUKaqPxSpdQhDtkzRGTXt",
134-
"title": "event-link-title-qVEnmIrJSrigNVLppdQHoOodgAvTEgRXiaJkAPEEPmWsusPdXf"
143+
"title": "event-link-title-qVEnmIrJSrigNVLppdQHoOodgAvTEgRXiaJkAPEEPmWsusPdXf",
144+
"translation_module_original_language": "en"
135145
},
136146
{
137147
"id": 1,
138148
"url": "",
139149
"description": "event-link-description-LEkHOUNXyjRpcKShmbCuAjASnAGXNEVUdTiHnJuQEHyulDIvIwRXURPZSqNEmprJtotXsTnSTFuEwJYUrshKRIyzwXZjscsTfwCP",
140-
"title": "event-link-title-ZEHDjMGiuNukzNVtLvGGIFTKtEbxvRhALtYUSObMEqPYXLKoUd"
150+
"title": "event-link-title-ZEHDjMGiuNukzNVtLvGGIFTKtEbxvRhALtYUSObMEqPYXLKoUd",
151+
"translation_module_original_language": "en"
141152
}
142153
],
143154
"emergency_response_contact_email": None,
144155
"countries_for_preview": [],
145156
"response_activity_count": 0,
146157
"visibility": 3,
147158
"name": "event-OhbVrpoiVgRVIfLBcbfnoGMbJmTPSIAoCLrZaWZkSBvrjnWvgf",
148-
"slug": "ygwwmqzcudihyfjsonxkmtecqoxsfogyrdoxkxwnqrsrpemoki"
159+
"slug": "ygwwmqzcudihyfjsonxkmtecqoxsfogyrdoxkxwnqrsrpemoki",
160+
"translation_module_original_language": "en"
149161
}

api/test_views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def test_create_and_update(self):
170170
# (Since with with self.capture_on_commit_callbacks(execute=True) is not used so translation has not been triggered)
171171
self.assertEqual(updated.summary_en, 'test [updated]')
172172
self.assertEqual(updated.description_en, 'this is a test description')
173-
self.assertEqual(updated.summary_es, None) # This has been reset
173+
self.assertEqual(updated.summary_es, '') # This has been reset
174174
self.assertEqual(
175175
updated.description_es,
176176
self.aws_translator._fake_translation('this is a test description', 'es', 'en'),
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Generated by Django 3.2.18 on 2023-04-10 07:20
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('deployments', '0076_auto_20230309_1556'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='deployedperson',
15+
name='translation_module_original_language',
16+
field=models.CharField(choices=[('en', 'English'), ('es', 'Spanish'), ('fr', 'French'), ('ar', 'Arabic')], default='en', help_text='Language used to create this entity', max_length=2, verbose_name='Entity Original language'),
17+
),
18+
migrations.AddField(
19+
model_name='deployedperson',
20+
name='translation_module_skip_auto_translation',
21+
field=models.BooleanField(default=False, help_text='Skip auto translation operation for this entity?', verbose_name='Skip auto translation'),
22+
),
23+
migrations.AddField(
24+
model_name='partnersocietyactivities',
25+
name='translation_module_original_language',
26+
field=models.CharField(choices=[('en', 'English'), ('es', 'Spanish'), ('fr', 'French'), ('ar', 'Arabic')], default='en', help_text='Language used to create this entity', max_length=2, verbose_name='Entity Original language'),
27+
),
28+
migrations.AddField(
29+
model_name='partnersocietyactivities',
30+
name='translation_module_skip_auto_translation',
31+
field=models.BooleanField(default=False, help_text='Skip auto translation operation for this entity?', verbose_name='Skip auto translation'),
32+
),
33+
migrations.AddField(
34+
model_name='personneldeployment',
35+
name='translation_module_original_language',
36+
field=models.CharField(choices=[('en', 'English'), ('es', 'Spanish'), ('fr', 'French'), ('ar', 'Arabic')], default='en', help_text='Language used to create this entity', max_length=2, verbose_name='Entity Original language'),
37+
),
38+
migrations.AddField(
39+
model_name='personneldeployment',
40+
name='translation_module_skip_auto_translation',
41+
field=models.BooleanField(default=False, help_text='Skip auto translation operation for this entity?', verbose_name='Skip auto translation'),
42+
),
43+
migrations.AddField(
44+
model_name='project',
45+
name='translation_module_original_language',
46+
field=models.CharField(choices=[('en', 'English'), ('es', 'Spanish'), ('fr', 'French'), ('ar', 'Arabic')], default='en', help_text='Language used to create this entity', max_length=2, verbose_name='Entity Original language'),
47+
),
48+
migrations.AddField(
49+
model_name='project',
50+
name='translation_module_skip_auto_translation',
51+
field=models.BooleanField(default=False, help_text='Skip auto translation operation for this entity?', verbose_name='Skip auto translation'),
52+
),
53+
migrations.AddField(
54+
model_name='regionalproject',
55+
name='translation_module_original_language',
56+
field=models.CharField(choices=[('en', 'English'), ('es', 'Spanish'), ('fr', 'French'), ('ar', 'Arabic')], default='en', help_text='Language used to create this entity', max_length=2, verbose_name='Entity Original language'),
57+
),
58+
migrations.AddField(
59+
model_name='regionalproject',
60+
name='translation_module_skip_auto_translation',
61+
field=models.BooleanField(default=False, help_text='Skip auto translation operation for this entity?', verbose_name='Skip auto translation'),
62+
),
63+
]

0 commit comments

Comments
 (0)