From 1ff471d538fccd4f9a6ee0b1022a746317182296 Mon Sep 17 00:00:00 2001 From: k9845 Date: Tue, 20 Feb 2024 10:33:13 +0545 Subject: [PATCH] Add validation for loan dref type in final report --- dref/serializers.py | 5 +++++ dref/test_views.py | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/dref/serializers.py b/dref/serializers.py index 71b4d44e2..13da40031 100644 --- a/dref/serializers.py +++ b/dref/serializers.py @@ -923,6 +923,11 @@ def validate_photos(self, photos): raise serializers.ValidationError("Can add utmost %s photos" % self.MAX_NUMBER_OF_PHOTOS) return photos + def validate_type_of_dref(self, type_of_dref): + if self.instance and self.instance.type_of_dref == Dref.DrefType.LOAN: + raise serializers.ValidationError("Can't change dref type for %s in Final Report" % Dref.DrefType.LOAN) + return type_of_dref + def create(self, validated_data): # here check if there is operational update for corresponding dref # if yes copy from the latest operational update diff --git a/dref/test_views.py b/dref/test_views.py index 18593fb1f..b23f62391 100644 --- a/dref/test_views.py +++ b/dref/test_views.py @@ -1309,3 +1309,27 @@ def test_dref_share_users(self): set(response.data['results'][0]['users']), set([user2.id, user3.id, user4.id]) ) + + def test_dref_final_report_change_for_loan_type(self): + country_1 = Country.objects.create(name="country1") + dref = DrefFactory.create( + is_published=True, + type_of_dref=Dref.DrefType.LOAN, + country=country_1, + created_by=self.root_user + ) + final_report = DrefFinalReportFactory.create( + is_published=False, + country=country_1, + type_of_dref=Dref.DrefType.LOAN, + dref=dref, + created_by=self.root_user + ) + url = f"/api/v2/dref-final-report/{final_report.id}/" + data = { + "type_of_dref": Dref.DrefType.ASSESSMENT, + "modified_at": datetime.now() + timedelta(days=1) + } + self.authenticate(self.root_user) + response = self.client.patch(url, data=data) + self.assertEqual(response.status_code, 400)