Skip to content

Commit 5399a14

Browse files
committed
chore(eap): Update typings on registration and eaps
1 parent 307200f commit 5399a14

File tree

3 files changed

+91
-60
lines changed

3 files changed

+91
-60
lines changed

assets

eap/serializers.py

Lines changed: 74 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -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

92142
class 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:
114168
class 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-
274283
ALLOWED_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

373382
class 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

394405
class 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

402414
class 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

410423
class 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]:

eap/views.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,22 @@ def get_queryset(self) -> QuerySet[EAPRegistration]:
104104
)
105105
.prefetch_related(
106106
"partners",
107-
"simplified_eap",
107+
Prefetch(
108+
"simplified_eap",
109+
queryset=SimplifiedEAP.objects.select_related(
110+
"budget_file__created_by",
111+
"budget_file__modified_by",
112+
"updated_checklist_file__created_by",
113+
"updated_checklist_file__modified_by",
114+
),
115+
),
116+
Prefetch(
117+
"full_eap",
118+
queryset=FullEAP.objects.select_related(
119+
"budget_file__created_by",
120+
"budget_file__modified_by",
121+
),
122+
),
108123
)
109124
)
110125

0 commit comments

Comments
 (0)