Coverage for backend/PinchAnalysis/views/StreamDataProjectViewSet.py: 44%
30 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
1import traceback
2from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
3from core.viewset import ModelViewSet
4from rest_framework.response import Response
5from PinchAnalysis.models.StreamDataProject import StreamDataProject
6from PinchAnalysis.serializers.StreamDataProjectSerializer import StreamDataProjectSerializer
7from flowsheetInternals.graphicData.models.groupingModel import Grouping
8class StreamDataProjectViewSet(ModelViewSet):
9 serializer_class = StreamDataProjectSerializer
11 def get_queryset(self):
12 return StreamDataProject.objects.all()
14 @extend_schema(
15 parameters=[
16 OpenApiParameter(name="flowsheet", required=True, type=OpenApiTypes.INT),
17 ]
18 )
20 def list(self, request):
21 return super().list(request)
23 def error_response(self, e):
24 tb_info = traceback.format_exc()
25 error_message = str(e)
26 response_data = {'status': 'error', 'message': error_message, 'traceback': tb_info}
27 return Response(response_data, status=400)
29 def create(self, request, *args, **kwargs):
30 try:
31 group_owner = request.data.get('groupOwner')
32 if not group_owner:
33 return Response(
34 {'error': 'groupOwner is required.'},
35 status=400
36 )
37 grouping_owner = Grouping.objects.get(pk=group_owner)
38 flowsheet = grouping_owner.simulationObject.flowsheet
39 instance = StreamDataProject.create(flowsheet=flowsheet)
40 return Response({'status': 'success'}, status=200)
41 except Exception as e:
42 return self.error_response(e)