Skip to content

Commit ce100f5

Browse files
committed
feat(dref): add translation retrigger logic in finalize API
1 parent 8fa4716 commit ce100f5

File tree

5 files changed

+167
-75
lines changed

5 files changed

+167
-75
lines changed

dref/serializers.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from django.contrib.auth.models import User
77
from django.db import models, transaction
88
from django.utils import timezone
9-
from django.utils.translation import get_language, gettext
9+
from django.utils.translation import gettext
1010
from django.utils.translation import gettext_lazy as _
1111
from drf_spectacular.utils import extend_schema_field
1212
from rest_framework import serializers
@@ -435,7 +435,6 @@ class Meta:
435435
"created_by",
436436
"budget_file_preview",
437437
"is_dref_imminent_v2",
438-
"original_language",
439438
)
440439
exclude = (
441440
"cover_image",
@@ -485,7 +484,7 @@ def validate(self, data):
485484
if self.instance and self.instance.status == Dref.Status.APPROVED:
486485
raise serializers.ValidationError("Approved Dref can't be changed. Please contact Admin")
487486
if self.instance and DrefFinalReport.objects.filter(dref=self.instance, status=Dref.Status.APPROVED).exists():
488-
raise serializers.ValidationError(gettext("Can't Update %s dref for approved Field Report" % self.instance.id))
487+
raise serializers.ValidationError(gettext("Can't Update %s dref for approved Final Report" % self.instance.id))
489488
if operation_timeframe and is_assessment_report and operation_timeframe > 30:
490489
raise serializers.ValidationError(
491490
gettext("Operation timeframe can't be greater than %s for assessment_report" % self.MAX_OPERATION_TIMEFRAME)
@@ -613,8 +612,6 @@ def validate_budget_file_preview(self, budget_file_preview):
613612
return budget_file_preview
614613

615614
def create(self, validated_data):
616-
current_lang = get_language()
617-
validated_data["original_language"] = current_lang
618615
validated_data["created_by"] = self.context["request"].user
619616
validated_data["is_active"] = True
620617
type_of_dref = validated_data.get("type_of_dref")
@@ -652,7 +649,6 @@ def create(self, validated_data):
652649
else:
653650
to = None
654651
# set original language
655-
validated_data["original_language"] = current_lang
656652
dref = super().create(validated_data)
657653
if to:
658654
transaction.on_commit(lambda: send_dref_email.delay(dref.id, list(to), "New"))
@@ -737,7 +733,6 @@ class Meta:
737733
"operational_update_number",
738734
"modified_by",
739735
"created_by",
740-
"original_language",
741736
)
742737
exclude = (
743738
"images",
@@ -791,10 +786,13 @@ def validate_images_file(self, images):
791786

792787
def create(self, validated_data):
793788
dref = validated_data["dref"]
794-
current_language = get_language()
789+
language = validated_data.get("original_language")
790+
if language != dref.original_language and language != dref.translation_module_original_language:
791+
raise serializers.ValidationError(
792+
gettext(f"Language must be either '{dref.original_language}' or '{dref.translation_module_original_language}'.")
793+
)
795794
dref_operational_update = DrefOperationalUpdate.objects.filter(dref=dref).order_by("-operational_update_number").first()
796795
validated_data["created_by"] = self.context["request"].user
797-
validated_data["original_language"] = current_language
798796
if not dref_operational_update:
799797
validated_data["title"] = dref.title
800798
validated_data["title_prefix"] = dref.title_prefix
@@ -1128,7 +1126,6 @@ class Meta:
11281126
"created_by",
11291127
"financial_report_preview",
11301128
"is_dref_imminent_v2",
1131-
"original_language",
11321129
)
11331130
exclude = (
11341131
"images",
@@ -1239,15 +1236,18 @@ def create(self, validated_data):
12391236
# here check if there is operational update for corresponding dref
12401237
# if yes copy from the latest operational update
12411238
# else copy from dref
1242-
current_language = get_language()
12431239
dref = validated_data["dref"]
1240+
language = validated_data.get("original_language")
1241+
if language != dref.original_language and language != dref.translation_module_original_language:
1242+
raise serializers.ValidationError(
1243+
gettext(f"Language must be either '{dref.original_language}' or '{dref.translation_module_original_language}'.")
1244+
)
12441245
dref_operational_update = (
12451246
DrefOperationalUpdate.objects.filter(dref=dref, status=Dref.Status.APPROVED)
12461247
.order_by("-operational_update_number")
12471248
.first()
12481249
)
12491250
validated_data["created_by"] = self.context["request"].user
1250-
validated_data["original_language"] = current_language
12511251
# NOTE: Checks and common fields for the new dref final reports of new dref imminents
12521252
if dref.type_of_dref == Dref.DrefType.IMMINENT and dref.is_dref_imminent_v2:
12531253
validated_data["is_dref_imminent_v2"] = True

0 commit comments

Comments
 (0)