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

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 

10 

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 

21 

22 @extend_schema( 

23 parameters=[ 

24 OpenApiParameter(name="projectOwner", required=False, type=OpenApiTypes.INT), 

25 ] 

26 ) 

27 

28 def list(self, request): 

29 return super().list(request) 

30 

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)