Skip to content

Commit 1a3001e

Browse files
committed
feat(event): add latest field report on mini event endpoint
1 parent 0153186 commit 1a3001e

3 files changed

Lines changed: 13 additions & 3 deletions

File tree

api/drf_views.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
)
6060
from country_plan.models import CountryPlan
6161
from databank.serializers import CountryOverviewSerializer
62-
from deployments.models import ERU, EmergencyProject, Personnel
62+
from deployments.models import ERU, Personnel
6363
from deployments.serializers import ListDeployedERUByEventSerializer
6464
from dref.models import Dref, DrefFinalReport, DrefOperationalUpdate
6565
from main.enums import GlobalEnumSerializer, get_enum_values
@@ -754,7 +754,8 @@ def get_queryset(self, *args, **kwargs):
754754
qset = super().get_queryset()
755755
if self.action == "mini_events":
756756
# return Event.objects.filter(parent_event__isnull=True).select_related('dtype')
757-
return qset.filter(parent_event__isnull=True).select_related("dtype")
757+
return qset.filter(parent_event__isnull=True).select_related("dtype").prefetch_related("countries_for_preview")
758+
758759
if self.action == "response_activity_events":
759760
return (
760761
qset.filter(parent_event__isnull=True)
@@ -874,7 +875,11 @@ def retrieve(self, request, pk=None, *args, **kwargs):
874875
)
875876
@action(methods=["get"], detail=False, url_path="mini")
876877
def mini_events(self, request):
877-
queryset = self.filter_queryset(self.get_queryset())
878+
queryset = self.filter_queryset(self.get_queryset()).annotate(
879+
latest_field_report_id=Subquery(
880+
FieldReport.objects.filter(event=OuterRef("pk")).order_by("-updated_at").values("id")[:1]
881+
)
882+
)
878883
serializer = ListMiniEventSerializer(queryset, many=True)
879884
page = self.paginate_queryset(queryset)
880885
if page is not None:

api/serializers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,6 +1067,8 @@ class Meta:
10671067
class ListMiniEventSerializer(ModelSerializer):
10681068
dtype = DisasterTypeSerializer(required=False)
10691069
countries_for_preview = MiniCountrySerializer(many=True, read_only=True)
1070+
latest_field_report_id = serializers.IntegerField(read_only=True)
1071+
source_display = serializers.CharField(source="get_source_display", read_only=True)
10701072

10711073
class Meta:
10721074
model = Event
@@ -1076,8 +1078,10 @@ class Meta:
10761078
"slug",
10771079
"dtype",
10781080
"source",
1081+
"source_display",
10791082
"emergency_response_contact_email",
10801083
"countries_for_preview",
1084+
"latest_field_report_id",
10811085
)
10821086

10831087

main/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@
269269
url(r"^api/v2/per-options/", per_views.PerOptionsView.as_view()),
270270
url(r"^api/v2/export-per/(?P<pk>\d+)/", per_views.ExportPerView.as_view()),
271271
url(r"^api/v2/local-units-options/", local_units_views.LocalUnitOptionsView.as_view()),
272+
# NOTE: This should be removed as DefaultRouter should cover this.
272273
url(r"^api/v2/event/(?P<pk>\d+)", api_views.EventViewset.as_view({"get": "retrieve"})),
273274
url(r"^api/v2/event/(?P<slug>[-\w]+)", api_views.EventViewset.as_view({"get": "retrieve"}, lookup_field="slug")),
274275
url(r"^api/v2/delegation-office/(?P<pk>\d+)", DelegationOfficeDetailAPIView.as_view()),

0 commit comments

Comments
 (0)