From 9a69d0a0d1ebf42db9b446370eb4928d2a8448f7 Mon Sep 17 00:00:00 2001 From: hasan7n Date: Fri, 22 Sep 2023 16:16:22 +0200 Subject: [PATCH] add /mlcubes/id/reports endpoint --- server/mlcube/urls.py | 1 + server/mlcube/views.py | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/server/mlcube/urls.py b/server/mlcube/urls.py index 50cfd99b0..223c7df7a 100644 --- a/server/mlcube/urls.py +++ b/server/mlcube/urls.py @@ -10,4 +10,5 @@ path("benchmarks/", bviews.BenchmarkModelList.as_view()), path("/benchmarks/", bviews.BenchmarkModelApproval.as_view()), path("/benchmarks//", bviews.ModelApproval.as_view()), + path("/reports/", views.MlCubeReportList.as_view()), ] diff --git a/server/mlcube/views.py b/server/mlcube/views.py index 933cfc5c5..d99695f07 100644 --- a/server/mlcube/views.py +++ b/server/mlcube/views.py @@ -7,6 +7,8 @@ from .models import MlCube from .serializers import MlCubeSerializer, MlCubeDetailSerializer from .permissions import IsAdmin, IsMlCubeOwner +from report.models import Report +from report.serializers import ReportSerializer class MlCubeList(GenericAPIView): @@ -77,3 +79,25 @@ def delete(self, request, pk, format=None): mlcube = self.get_object(pk) mlcube.delete() return Response(status=status.HTTP_204_NO_CONTENT) + + +class MlCubeReportList(GenericAPIView): + permission_classes = [IsAdmin | IsMlCubeOwner] + serializer_class = ReportSerializer + queryset = "" + + def get_object(self, pk): + try: + return MlCube.objects.get(pk=pk) + except MlCube.DoesNotExist: + raise Http404 + + def get(self, request, pk, format=None): + """ + Retrieve reports associated with an MlCube instance. + """ + mlcube = self.get_object(pk) + reports = mlcube.report_set.all() + reports = self.paginate_queryset(reports) + serializer = ReportSerializer(reports, many=True) + return self.get_paginated_response(serializer.data)