33
44from django .utils .translation import gettext
55from django .db import models , transaction
6+ from django .conf import settings
67
78from rest_framework import serializers
89
@@ -184,7 +185,6 @@ class DrefSerializer(
184185 ALLOWED_ASSESSMENT_REPORT_EXTENSIONS = ["pdf" , "docx" , "pptx" ]
185186 MAX_OPERATION_TIMEFRAME = 30
186187 ASSESSMENT_REPORT_MAX_OPERATION_TIMEFRAME = 2
187- DREF_UPDATE_ERROR_MESSAGE = "OBSOLETE_PAYLOAD"
188188 national_society_actions = NationalSocietyActionSerializer (many = True , required = False )
189189 needs_identified = IdentifiedNeedSerializer (many = True , required = False )
190190 planned_interventions = PlannedInterventionSerializer (many = True , required = False )
@@ -349,7 +349,7 @@ def update(self, instance, validated_data):
349349 is_assessment_report = validated_data .get ('is_assessment_report' )
350350 modified_at = validated_data .pop ('modified_at' , None )
351351 if modified_at is None :
352- raise serializers .ValidationError ({ 'modified_at' : 'Modified At is required!' })
352+ raise serializers .ValidationError ({'modified_at' : 'Modified At is required!' })
353353 if is_assessment_report :
354354 # Previous Operations
355355 validated_data ['lessons_learned' ] = None
@@ -383,7 +383,7 @@ def update(self, instance, validated_data):
383383 else :
384384 to = None
385385 if modified_at and instance .modified_at and modified_at < instance .modified_at :
386- raise serializers .ValidationError ({ 'modified_at' : self . DREF_UPDATE_ERROR_MESSAGE })
386+ raise serializers .ValidationError ({'modified_at' : settings . DREF_OP_UPDATE_UPDATE_ERROR_MESSAGE })
387387 dref = super ().update (instance , validated_data )
388388 if to :
389389 transaction .on_commit (
@@ -414,6 +414,7 @@ class DrefOperationalUpdateSerializer(
414414 district_details = MiniDistrictSerializer (source = 'district' , read_only = True , many = True )
415415 assessment_report_file = DrefFileSerializer (source = 'assessment_report' , required = False , allow_null = True )
416416 risk_security = RiskSecuritySerializer (many = True , required = False )
417+ modified_at = serializers .DateTimeField (required = False )
417418
418419 class Meta :
419420 model = DrefOperationalUpdate
@@ -656,6 +657,9 @@ def update(self, instance, validated_data):
656657 dref_target_population_of_operation = validated_data .get ('dref' , instance .dref ).total_targeted_population
657658 dref_amount_requested = validated_data .get ('dref' , instance .dref ).amount_requested
658659 dref_district = validated_data .get ('dref' , instance .dref ).district .all ()
660+ modified_at = validated_data .pop ('modified_at' , None )
661+ if modified_at is None :
662+ raise serializers .ValidationError ({'modified_at' : 'Modified At is required!' })
659663
660664 if (not changing_timeframe_operation ) and total_operation_timeframe and dref_operation_timeframe and \
661665 total_operation_timeframe != dref_operation_timeframe :
@@ -682,6 +686,8 @@ def update(self, instance, validated_data):
682686 if changing_geographic_location and district and dref_district and set (district ) == set (dref_district ):
683687 raise serializers .ValidationError ('Found same district for dref and operational update with changing set to true' )
684688
689+ if modified_at and instance .modified_at and modified_at < instance .modified_at :
690+ raise serializers .ValidationError ({'modified_at' : settings .DREF_OP_UPDATE_UPDATE_ERROR_MESSAGE })
685691 return super ().update (instance , validated_data )
686692
687693
0 commit comments