@@ -86,26 +86,80 @@ def update(self, instance, validated_data: dict[str, typing.Any]):
8686 return super ().update (instance , validated_data )
8787
8888
89+ class EAPFileInputSerializer (serializers .Serializer ):
90+ file = serializers .ListField (child = serializers .FileField (required = True ))
91+
92+
93+ class EAPGlobalFilesSerializer (serializers .Serializer ):
94+ url = serializers .URLField (read_only = True )
95+
96+
97+ class EAPFileSerializer (BaseEAPSerializer ):
98+ id = serializers .IntegerField (required = False )
99+ file = serializers .FileField (required = True )
100+
101+ class Meta :
102+ model = EAPFile
103+ fields = "__all__"
104+ read_only_fields = (
105+ "created_by" ,
106+ "modified_by" ,
107+ )
108+
109+ def validate_file (self , file ):
110+ validate_file_type (file )
111+ return file
112+
113+
114+ # NOTE: Separate serializer for partial updating EAPFile instance
115+ class EAPFileUpdateSerializer (BaseEAPSerializer ):
116+ id = serializers .IntegerField (required = True )
117+ file = serializers .FileField (required = False )
118+
119+ class Meta :
120+ model = EAPFile
121+ fields = "__all__"
122+ read_only_fields = (
123+ "created_by" ,
124+ "modified_by" ,
125+ )
126+
127+ def validate_id (self , id : int ) -> int :
128+ try :
129+ EAPFile .objects .get (id = id )
130+ except EAPFile .DoesNotExist :
131+ raise serializers .ValidationError (gettext ("Invalid pk '%s' - object does not exist." ) % id )
132+ return id
133+
134+ def validate_file (self , file ):
135+ validate_file_type (file )
136+ return file
137+
138+
89139# NOTE: Mini Serializers used for basic listing purpose
90140
91141
92142class MiniSimplifiedEAPSerializer (
93143 serializers .ModelSerializer ,
94144):
145+ updated_checklist_file_details = EAPFileSerializer (source = "updated_checklist_file" , read_only = True )
146+ budget_file_details = EAPFileSerializer (source = "budget_file" , read_only = True )
147+
95148 class Meta :
96149 model = SimplifiedEAP
97150 fields = [
98151 "id" ,
99- "eap_registration" ,
100152 "total_budget" ,
101153 "readiness_budget" ,
102154 "pre_positioning_budget" ,
103155 "early_action_budget" ,
104156 "seap_timeframe" ,
105157 "budget_file" ,
158+ "budget_file_details" ,
106159 "version" ,
107160 "is_locked" ,
108- "updated_checklist_file" ,
161+ "review_checklist_file" ,
162+ "updated_checklist_file_details" ,
109163 "created_at" ,
110164 "modified_at" ,
111165 ]
@@ -114,19 +168,23 @@ class Meta:
114168class MiniFullEAPSerializer (
115169 serializers .ModelSerializer ,
116170):
171+ updated_checklist_file_details = EAPFileSerializer (source = "updated_checklist_file" , read_only = True )
172+ budget_file_details = EAPFileSerializer (source = "budget_file" , read_only = True )
173+
117174 class Meta :
118175 model = FullEAP
119176 fields = [
120177 "id" ,
121- "eap_registration" ,
122178 "total_budget" ,
123179 "readiness_budget" ,
124180 "pre_positioning_budget" ,
125181 "early_action_budget" ,
126182 "budget_file" ,
183+ "budget_file_details" ,
127184 "version" ,
128185 "is_locked" ,
129- "updated_checklist_file" ,
186+ "review_checklist_file" ,
187+ "updated_checklist_file_details" ,
130188 "created_at" ,
131189 "modified_at" ,
132190 ]
@@ -189,6 +247,7 @@ class Meta:
189247 "modified_by" ,
190248 "latest_simplified_eap" ,
191249 "latest_full_eap" ,
250+ "summary_file" ,
192251 ]
193252
194253 def update (self , instance : EAPRegistration , validated_data : dict [str , typing .Any ]) -> dict [str , typing .Any ]:
@@ -221,56 +280,6 @@ def validate(self, validated_data: dict[str, typing.Any]) -> dict[str, typing.An
221280 return validated_data
222281
223282
224- class EAPFileInputSerializer (serializers .Serializer ):
225- file = serializers .ListField (child = serializers .FileField (required = True ))
226-
227-
228- class EAPGlobalFilesSerializer (serializers .Serializer ):
229- url = serializers .URLField (read_only = True )
230-
231-
232- class EAPFileSerializer (BaseEAPSerializer ):
233- id = serializers .IntegerField (required = False )
234- file = serializers .FileField (required = True )
235-
236- class Meta :
237- model = EAPFile
238- fields = "__all__"
239- read_only_fields = (
240- "created_by" ,
241- "modified_by" ,
242- )
243-
244- def validate_file (self , file ):
245- validate_file_type (file )
246- return file
247-
248-
249- # NOTE: Separate serializer for partial updating EAPFile instance
250- class EAPFileUpdateSerializer (BaseEAPSerializer ):
251- id = serializers .IntegerField (required = True )
252- file = serializers .FileField (required = False )
253-
254- class Meta :
255- model = EAPFile
256- fields = "__all__"
257- read_only_fields = (
258- "created_by" ,
259- "modified_by" ,
260- )
261-
262- def validate_id (self , id : int ) -> int :
263- try :
264- EAPFile .objects .get (id = id )
265- except EAPFile .DoesNotExist :
266- raise serializers .ValidationError (gettext ("Invalid pk '%s' - object does not exist." ) % id )
267- return id
268-
269- def validate_file (self , file ):
270- validate_file_type (file )
271- return file
272-
273-
274283ALLOWED_MAP_TIMEFRAMES_VALUE = {
275284 TimeFrame .YEARS : list (YearsTimeFrameChoices .values ),
276285 TimeFrame .MONTHS : list (MonthsTimeFrameChoices .values ),
@@ -283,6 +292,7 @@ class OperationActivitySerializer(
283292 serializers .ModelSerializer ,
284293):
285294 id = serializers .IntegerField (required = False )
295+ previous_id = serializers .IntegerField (read_only = True )
286296 timeframe = serializers .ChoiceField (
287297 choices = TimeFrame .choices ,
288298 required = True ,
@@ -320,6 +330,7 @@ class IndicatorSerializer(
320330 serializers .ModelSerializer ,
321331):
322332 id = serializers .IntegerField (required = False )
333+ previous_id = serializers .IntegerField (read_only = True )
323334
324335 class Meta :
325336 model = Indicator
@@ -332,6 +343,7 @@ class PlannedOperationSerializer(
332343 serializers .ModelSerializer ,
333344):
334345 id = serializers .IntegerField (required = False )
346+ previous_id = serializers .IntegerField (read_only = True )
335347
336348 sector_display = serializers .CharField (source = "get_sector_display" , read_only = True )
337349 indicators = IndicatorSerializer (many = True , required = True )
@@ -352,6 +364,7 @@ class EnableApproachSerializer(
352364 serializers .ModelSerializer ,
353365):
354366 id = serializers .IntegerField (required = False )
367+ previous_id = serializers .IntegerField (read_only = True )
355368
356369 approach_display = serializers .CharField (source = "get_approach_display" , read_only = True )
357370 indicators = IndicatorSerializer (many = True , required = True )
@@ -364,16 +377,13 @@ class EnableApproachSerializer(
364377 class Meta :
365378 model = EnableApproach
366379 fields = "__all__"
367- read_only_fields = (
368- "created_by" ,
369- "modified_by" ,
370- )
371380
372381
373382class EAPSourceInformationSerializer (
374383 serializers .ModelSerializer ,
375384):
376385 id = serializers .IntegerField (required = False )
386+ previous_id = serializers .IntegerField (read_only = True )
377387
378388 class Meta :
379389 model = SourceInformation
@@ -384,6 +394,7 @@ class KeyActorSerializer(
384394 serializers .ModelSerializer ,
385395):
386396 id = serializers .IntegerField (required = False )
397+ previous_id = serializers .IntegerField (read_only = True )
387398 national_society_details = MiniCountrySerializer (source = "national_society" , read_only = True )
388399
389400 class Meta :
@@ -393,6 +404,7 @@ class Meta:
393404
394405class EAPActionSerializer (serializers .ModelSerializer ):
395406 id = serializers .IntegerField (required = False )
407+ previous_id = serializers .IntegerField (read_only = True )
396408
397409 class Meta :
398410 model = EAPAction
@@ -401,6 +413,7 @@ class Meta:
401413
402414class ImpactSerializer (serializers .ModelSerializer ):
403415 id = serializers .IntegerField (required = False )
416+ previous_id = serializers .IntegerField (read_only = True )
404417
405418 class Meta :
406419 model = EAPImpact
@@ -409,6 +422,7 @@ class Meta:
409422
410423class EAPContactSerializer (serializers .ModelSerializer ):
411424 id = serializers .IntegerField (required = False )
425+ previous_id = serializers .IntegerField (read_only = True )
412426
413427 class Meta :
414428 model = EAPContact
@@ -429,6 +443,7 @@ class CommonEAPFieldsSerializer(serializers.ModelSerializer):
429443 admin2_details = Admin2Serializer (source = "admin2" , many = True , read_only = True )
430444 budget_file = serializers .PrimaryKeyRelatedField (queryset = EAPFile .objects .all (), required = True )
431445 budget_file_details = EAPFileSerializer (source = "budget_file" , read_only = True )
446+ updated_checklist_file_details = EAPFileSerializer (source = "updated_checklist_file" , read_only = True )
432447
433448 def get_fields (self ):
434449 fields = super ().get_fields ()
@@ -440,6 +455,7 @@ def get_fields(self):
440455 fields ["enable_approaches" ] = EnableApproachSerializer (many = True , required = True )
441456 fields ["budget_file" ] = serializers .PrimaryKeyRelatedField (queryset = EAPFile .objects .all (), required = True )
442457 fields ["budget_file_details" ] = EAPFileSerializer (source = "budget_file" , read_only = True )
458+ fields ["updated_checklist_file_details" ] = EAPFileSerializer (source = "updated_checklist_file" , read_only = True )
443459 return fields
444460
445461 def validate_budget_file (self , file : typing .Optional [EAPFile ]) -> typing .Optional [EAPFile ]:
0 commit comments