Coverage for backend/PinchAnalysis/views/PinchOutputViewSet.py: 45%
27 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
1from core.viewset import ModelViewSet
2from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
3from rest_framework.response import Response
4import traceback
5from PinchAnalysis.models.OutputModels import PinchOutputs
6from PinchAnalysis.serializers.PinchOutputSerializers import PinchOutputsSerializer
7from PinchAnalysis.models.StreamDataProject import StreamDataProject
8class PinchOutputViewSet(ModelViewSet):
9 serializer_class = PinchOutputsSerializer
11 def get_queryset(self):
12 queryset = PinchOutputs.objects.all()
13 projectId = self.request.query_params.get("projectOwner")
14 if projectId is not None:
15 try:
16 pinch_outputs = PinchOutputs.objects.filter(project_owner_id=projectId).values_list('project_owner', flat=True)
17 queryset = queryset.filter(project_owner__in=pinch_outputs)
18 except StreamDataProject.DoesNotExist:
19 queryset = queryset.none()
20 return queryset
22 @extend_schema(
23 parameters=[
24 OpenApiParameter(name="projectOwner", required=False, type=OpenApiTypes.INT),
25 ]
26 )
28 def list(self, request):
29 return super().list(request)
31 def error_response(self, e):
32 tb_info = traceback.format_exc()
33 error_message = str(e)
34 response_data = {'status': 'error', 'message': error_message, 'traceback': tb_info}
35 return Response(response_data, status=400)