Coverage for backend/PinchAnalysis/views/PinchAnalysisView.py: 48%
25 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 rest_framework.response import Response
2from rest_framework.decorators import api_view
3from drf_spectacular.utils import extend_schema
4from rest_framework import serializers
5from pinch_factory.pinch_factory import PinchFactory
6from core.validation import api_view_validate
8class PinchRequestSerializer(serializers.Serializer):
9 excludedSegments = serializers.ListField(
10 child=serializers.IntegerField(),
11 )
13@api_view_validate
14@extend_schema(request=PinchRequestSerializer)
15@api_view(['POST'])
16def pinch_analysis_view(request) -> Response:
17 try:
18 # Validate the request
19 serializer = PinchRequestSerializer(data=request.data)
20 serializer.is_valid(raise_exception=True)
21 validated_data = serializer.validated_data
22 excluded_segments = validated_data.get("excludedSegments", [])
24 flowsheet_id = request.GET.get("flowsheet")
26 # Initialize PinchFactory and prepare data
27 factory = PinchFactory(flowsheet_id)
28 factory.run_calculate(excluded_segments=excluded_segments)
30 # Perform the calculation and return results
31 return Response(data=None, status=200)
33 except ValueError as ve:
34 return Response({"error": str(ve)}, status=400)
36 except Exception as e:
37 return Response({"error": "An error occurred", "details": str(e)}, status=500)