Skip to content

Commit 4b51b8e

Browse files
committed
chore(eap): Update typings on registration and eaps
1 parent d31cd06 commit 4b51b8e

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
@@ -95,26 +95,80 @@ def update(self, instance, validated_data: dict[str, typing.Any]):
9595
return super().update(instance, validated_data)
9696

9797

98+
class EAPFileInputSerializer(serializers.Serializer):
99+
file = serializers.ListField(child=serializers.FileField(required=True))
100+
101+
102+
class EAPGlobalFilesSerializer(serializers.Serializer):
103+
url = serializers.URLField(read_only=True)
104+
105+
106+
class EAPFileSerializer(BaseEAPSerializer):
107+
id = serializers.IntegerField(required=False)
108+
file = serializers.FileField(required=True)
109+
110+
class Meta:
111+
model = EAPFile
112+
fields = "__all__"
113+
read_only_fields = (
114+
"created_by",
115+
"modified_by",
116+
)
117+
118+
def validate_file(self, file):
119+
validate_file_type(file)
120+
return file
121+
122+
123+
# NOTE: Separate serializer for partial updating EAPFile instance
124+
class EAPFileUpdateSerializer(BaseEAPSerializer):
125+
id = serializers.IntegerField(required=True)
126+
file = serializers.FileField(required=False)
127+
128+
class Meta:
129+
model = EAPFile
130+
fields = "__all__"
131+
read_only_fields = (
132+
"created_by",
133+
"modified_by",
134+
)
135+
136+
def validate_id(self, id: int) -> int:
137+
try:
138+
EAPFile.objects.get(id=id)
139+
except EAPFile.DoesNotExist:
140+
raise serializers.ValidationError(gettext("Invalid pk '%s' - object does not exist.") % id)
141+
return id
142+
143+
def validate_file(self, file):
144+
validate_file_type(file)
145+
return file
146+
147+
98148
# NOTE: Mini Serializers used for basic listing purpose
99149

100150

101151
class MiniSimplifiedEAPSerializer(
102152
serializers.ModelSerializer,
103153
):
154+
updated_checklist_file_details = EAPFileSerializer(source="updated_checklist_file", read_only=True)
155+
budget_file_details = EAPFileSerializer(source="budget_file", read_only=True)
156+
104157
class Meta:
105158
model = SimplifiedEAP
106159
fields = [
107160
"id",
108-
"eap_registration",
109161
"total_budget",
110162
"readiness_budget",
111163
"pre_positioning_budget",
112164
"early_action_budget",
113165
"seap_timeframe",
114166
"budget_file",
167+
"budget_file_details",
115168
"version",
116169
"is_locked",
117-
"updated_checklist_file",
170+
"review_checklist_file",
171+
"updated_checklist_file_details",
118172
"created_at",
119173
"modified_at",
120174
]
@@ -123,19 +177,23 @@ class Meta:
123177
class MiniFullEAPSerializer(
124178
serializers.ModelSerializer,
125179
):
180+
updated_checklist_file_details = EAPFileSerializer(source="updated_checklist_file", read_only=True)
181+
budget_file_details = EAPFileSerializer(source="budget_file", read_only=True)
182+
126183
class Meta:
127184
model = FullEAP
128185
fields = [
129186
"id",
130-
"eap_registration",
131187
"total_budget",
132188
"readiness_budget",
133189
"pre_positioning_budget",
134190
"early_action_budget",
135191
"budget_file",
192+
"budget_file_details",
136193
"version",
137194
"is_locked",
138-
"updated_checklist_file",
195+
"review_checklist_file",
196+
"updated_checklist_file_details",
139197
"created_at",
140198
"modified_at",
141199
]
@@ -199,6 +257,7 @@ class Meta:
199257
"latest_simplified_eap",
200258
"latest_full_eap",
201259
"deadline",
260+
"summary_file",
202261
]
203262

204263
def create(self, validated_data: dict[str, typing.Any]):
@@ -241,56 +300,6 @@ def validate(self, validated_data: dict[str, typing.Any]) -> dict[str, typing.An
241300
return validated_data
242301

243302

244-
class EAPFileInputSerializer(serializers.Serializer):
245-
file = serializers.ListField(child=serializers.FileField(required=True))
246-
247-
248-
class EAPGlobalFilesSerializer(serializers.Serializer):
249-
url = serializers.URLField(read_only=True)
250-
251-
252-
class EAPFileSerializer(BaseEAPSerializer):
253-
id = serializers.IntegerField(required=False)
254-
file = serializers.FileField(required=True)
255-
256-
class Meta:
257-
model = EAPFile
258-
fields = "__all__"
259-
read_only_fields = (
260-
"created_by",
261-
"modified_by",
262-
)
263-
264-
def validate_file(self, file):
265-
validate_file_type(file)
266-
return file
267-
268-
269-
# NOTE: Separate serializer for partial updating EAPFile instance
270-
class EAPFileUpdateSerializer(BaseEAPSerializer):
271-
id = serializers.IntegerField(required=True)
272-
file = serializers.FileField(required=False)
273-
274-
class Meta:
275-
model = EAPFile
276-
fields = "__all__"
277-
read_only_fields = (
278-
"created_by",
279-
"modified_by",
280-
)
281-
282-
def validate_id(self, id: int) -> int:
283-
try:
284-
EAPFile.objects.get(id=id)
285-
except EAPFile.DoesNotExist:
286-
raise serializers.ValidationError(gettext("Invalid pk '%s' - object does not exist.") % id)
287-
return id
288-
289-
def validate_file(self, file):
290-
validate_file_type(file)
291-
return file
292-
293-
294303
ALLOWED_MAP_TIMEFRAMES_VALUE = {
295304
TimeFrame.YEARS: list(YearsTimeFrameChoices.values),
296305
TimeFrame.MONTHS: list(MonthsTimeFrameChoices.values),
@@ -303,6 +312,7 @@ class OperationActivitySerializer(
303312
serializers.ModelSerializer,
304313
):
305314
id = serializers.IntegerField(required=False)
315+
previous_id = serializers.IntegerField(read_only=True)
306316
timeframe = serializers.ChoiceField(
307317
choices=TimeFrame.choices,
308318
required=True,
@@ -340,6 +350,7 @@ class IndicatorSerializer(
340350
serializers.ModelSerializer,
341351
):
342352
id = serializers.IntegerField(required=False)
353+
previous_id = serializers.IntegerField(read_only=True)
343354

344355
class Meta:
345356
model = Indicator
@@ -352,6 +363,7 @@ class PlannedOperationSerializer(
352363
serializers.ModelSerializer,
353364
):
354365
id = serializers.IntegerField(required=False)
366+
previous_id = serializers.IntegerField(read_only=True)
355367

356368
sector_display = serializers.CharField(source="get_sector_display", read_only=True)
357369
indicators = IndicatorSerializer(many=True, required=True)
@@ -372,6 +384,7 @@ class EnableApproachSerializer(
372384
serializers.ModelSerializer,
373385
):
374386
id = serializers.IntegerField(required=False)
387+
previous_id = serializers.IntegerField(read_only=True)
375388

376389
approach_display = serializers.CharField(source="get_approach_display", read_only=True)
377390
indicators = IndicatorSerializer(many=True, required=True)
@@ -384,16 +397,13 @@ class EnableApproachSerializer(
384397
class Meta:
385398
model = EnableApproach
386399
fields = "__all__"
387-
read_only_fields = (
388-
"created_by",
389-
"modified_by",
390-
)
391400

392401

393402
class EAPSourceInformationSerializer(
394403
serializers.ModelSerializer,
395404
):
396405
id = serializers.IntegerField(required=False)
406+
previous_id = serializers.IntegerField(read_only=True)
397407

398408
class Meta:
399409
model = SourceInformation
@@ -404,6 +414,7 @@ class KeyActorSerializer(
404414
serializers.ModelSerializer,
405415
):
406416
id = serializers.IntegerField(required=False)
417+
previous_id = serializers.IntegerField(read_only=True)
407418
national_society_details = MiniCountrySerializer(source="national_society", read_only=True)
408419

409420
class Meta:
@@ -413,6 +424,7 @@ class Meta:
413424

414425
class EAPActionSerializer(serializers.ModelSerializer):
415426
id = serializers.IntegerField(required=False)
427+
previous_id = serializers.IntegerField(read_only=True)
416428

417429
class Meta:
418430
model = EAPAction
@@ -421,6 +433,7 @@ class Meta:
421433

422434
class ImpactSerializer(serializers.ModelSerializer):
423435
id = serializers.IntegerField(required=False)
436+
previous_id = serializers.IntegerField(read_only=True)
424437

425438
class Meta:
426439
model = EAPImpact
@@ -429,6 +442,7 @@ class Meta:
429442

430443
class EAPContactSerializer(serializers.ModelSerializer):
431444
id = serializers.IntegerField(required=False)
445+
previous_id = serializers.IntegerField(read_only=True)
432446

433447
class Meta:
434448
model = EAPContact
@@ -449,6 +463,7 @@ class CommonEAPFieldsSerializer(serializers.ModelSerializer):
449463
admin2_details = Admin2Serializer(source="admin2", many=True, read_only=True)
450464
budget_file = serializers.PrimaryKeyRelatedField(queryset=EAPFile.objects.all(), required=True)
451465
budget_file_details = EAPFileSerializer(source="budget_file", read_only=True)
466+
updated_checklist_file_details = EAPFileSerializer(source="updated_checklist_file", read_only=True)
452467

453468
def get_fields(self):
454469
fields = super().get_fields()
@@ -460,6 +475,7 @@ def get_fields(self):
460475
fields["enable_approaches"] = EnableApproachSerializer(many=True, required=True)
461476
fields["budget_file"] = serializers.PrimaryKeyRelatedField(queryset=EAPFile.objects.all(), required=True)
462477
fields["budget_file_details"] = EAPFileSerializer(source="budget_file", read_only=True)
478+
fields["updated_checklist_file_details"] = EAPFileSerializer(source="updated_checklist_file", read_only=True)
463479
return fields
464480

465481
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)