|
6 | 6 | from django.contrib.auth.models import User |
7 | 7 | from django.db import models, transaction |
8 | 8 | from django.utils import timezone |
9 | | -from django.utils.translation import get_language, gettext |
| 9 | +from django.utils.translation import gettext |
10 | 10 | from django.utils.translation import gettext_lazy as _ |
11 | 11 | from drf_spectacular.utils import extend_schema_field |
12 | 12 | from rest_framework import serializers |
@@ -435,7 +435,6 @@ class Meta: |
435 | 435 | "created_by", |
436 | 436 | "budget_file_preview", |
437 | 437 | "is_dref_imminent_v2", |
438 | | - "original_language", |
439 | 438 | ) |
440 | 439 | exclude = ( |
441 | 440 | "cover_image", |
@@ -485,7 +484,7 @@ def validate(self, data): |
485 | 484 | if self.instance and self.instance.status == Dref.Status.APPROVED: |
486 | 485 | raise serializers.ValidationError("Approved Dref can't be changed. Please contact Admin") |
487 | 486 | 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)) |
489 | 488 | if operation_timeframe and is_assessment_report and operation_timeframe > 30: |
490 | 489 | raise serializers.ValidationError( |
491 | 490 | 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): |
613 | 612 | return budget_file_preview |
614 | 613 |
|
615 | 614 | def create(self, validated_data): |
616 | | - current_lang = get_language() |
617 | | - validated_data["original_language"] = current_lang |
618 | 615 | validated_data["created_by"] = self.context["request"].user |
619 | 616 | validated_data["is_active"] = True |
620 | 617 | type_of_dref = validated_data.get("type_of_dref") |
@@ -652,7 +649,6 @@ def create(self, validated_data): |
652 | 649 | else: |
653 | 650 | to = None |
654 | 651 | # set original language |
655 | | - validated_data["original_language"] = current_lang |
656 | 652 | dref = super().create(validated_data) |
657 | 653 | if to: |
658 | 654 | transaction.on_commit(lambda: send_dref_email.delay(dref.id, list(to), "New")) |
@@ -737,7 +733,6 @@ class Meta: |
737 | 733 | "operational_update_number", |
738 | 734 | "modified_by", |
739 | 735 | "created_by", |
740 | | - "original_language", |
741 | 736 | ) |
742 | 737 | exclude = ( |
743 | 738 | "images", |
@@ -791,10 +786,13 @@ def validate_images_file(self, images): |
791 | 786 |
|
792 | 787 | def create(self, validated_data): |
793 | 788 | 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 | + ) |
795 | 794 | dref_operational_update = DrefOperationalUpdate.objects.filter(dref=dref).order_by("-operational_update_number").first() |
796 | 795 | validated_data["created_by"] = self.context["request"].user |
797 | | - validated_data["original_language"] = current_language |
798 | 796 | if not dref_operational_update: |
799 | 797 | validated_data["title"] = dref.title |
800 | 798 | validated_data["title_prefix"] = dref.title_prefix |
@@ -1128,7 +1126,6 @@ class Meta: |
1128 | 1126 | "created_by", |
1129 | 1127 | "financial_report_preview", |
1130 | 1128 | "is_dref_imminent_v2", |
1131 | | - "original_language", |
1132 | 1129 | ) |
1133 | 1130 | exclude = ( |
1134 | 1131 | "images", |
@@ -1239,15 +1236,18 @@ def create(self, validated_data): |
1239 | 1236 | # here check if there is operational update for corresponding dref |
1240 | 1237 | # if yes copy from the latest operational update |
1241 | 1238 | # else copy from dref |
1242 | | - current_language = get_language() |
1243 | 1239 | 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 | + ) |
1244 | 1245 | dref_operational_update = ( |
1245 | 1246 | DrefOperationalUpdate.objects.filter(dref=dref, status=Dref.Status.APPROVED) |
1246 | 1247 | .order_by("-operational_update_number") |
1247 | 1248 | .first() |
1248 | 1249 | ) |
1249 | 1250 | validated_data["created_by"] = self.context["request"].user |
1250 | | - validated_data["original_language"] = current_language |
1251 | 1251 | # NOTE: Checks and common fields for the new dref final reports of new dref imminents |
1252 | 1252 | if dref.type_of_dref == Dref.DrefType.IMMINENT and dref.is_dref_imminent_v2: |
1253 | 1253 | validated_data["is_dref_imminent_v2"] = True |
|
0 commit comments