Skip to content

Commit

Permalink
Add an endpoint to download the analysis of a PiRogue experiment
Browse files Browse the repository at this point in the history
  • Loading branch information
U039b committed Sep 5, 2024
1 parent b6d14fd commit 3423914
Showing 1 changed file with 24 additions and 4 deletions.
28 changes: 24 additions & 4 deletions colander/core/api/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.http import Http404, HttpResponse
from rest_framework import mixins
from django.http import Http404, HttpResponse, JsonResponse
from rest_framework import mixins, status
from rest_framework.authentication import SessionAuthentication, TokenAuthentication
from rest_framework.decorators import action
from rest_framework.permissions import IsAuthenticated
Expand Down Expand Up @@ -144,7 +144,6 @@ def perform_create(self, serializer):

class ApiPiRogueExperimentViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
# mixins.UpdateModelMixin,
mixins.ListModelMixin,
GenericViewSet):
authentication_classes = [SessionAuthentication, TokenAuthentication]
Expand All @@ -153,11 +152,32 @@ class ApiPiRogueExperimentViewSet(mixins.CreateModelMixin,

def get_queryset(self):
cases = self.request.user.all_my_cases
return PiRogueExperiment.objects.filter(case__in=cases)
queryset = PiRogueExperiment.objects.filter(case__in=cases)

case_id = self.request.query_params.get('case_id')
if case_id is not None:
queryset = queryset.filter(case=case_id)

name = self.request.query_params.get('name')
if name is not None:
queryset = queryset.filter(name__icontains=name)

return queryset

def perform_create(self, serializer):
return serializer.save(owner=self.request.user)

@action(methods=['get'], detail=True)
def analysis(self, request, pk):
try:
experiment = PiRogueExperiment.objects.get(pk=pk, owner=request.user)
_analysis = experiment.analysis
except Artifact.DoesNotExist:
raise Http404
if _analysis:
return JsonResponse(_analysis.to_dict(), safe=False, status=status.HTTP_200_OK)
raise Http404


class ApiObservableViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
Expand Down

0 comments on commit 3423914

Please sign in to comment.