Coverage for backend/core/auxiliary/views/DeleteMSSData.py: 67%
24 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
2from rest_framework.response import Response
3from core.auxiliary.models.SolveState import SolveValue, SolveState
4from core.auxiliary.serializers.SolveStateSerializer import SolveValueSerializer, SolveStateSerializer
5from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
6from core.auxiliary.models.Expression import Expression
7from rest_framework.decorators import api_view
8from drf_spectacular.utils import extend_schema
9from rest_framework import serializers
10from core.validation import api_view_validate
13class DeleteDataSerializer(serializers.Serializer):
14 # THe data format is e.g:
15 # {
16 # "data": {
17 # "heater_enthalpy": [1, 2, 3, 4, 5],
18 # "heater_temperature": [1, 2, 3, 4, 5]
19 # }
20 # "flowsheet": 1
21 # }
22 flowsheet = serializers.IntegerField()
23 scenario = serializers.IntegerField()
25@api_view_validate
26@extend_schema(request=DeleteDataSerializer, responses=None)
27@api_view(['POST'])
28def delete_data(request) -> Response:
29 serializer = DeleteDataSerializer(data=request.data)
30 serializer.is_valid(raise_exception=True)
31 flowsheet_id = serializer.validated_data["flowsheet"]
32 scenario_id = serializer.validated_data["scenario"]
34 solve_states = SolveState.objects.filter(
35 flowsheet_id=flowsheet_id,
36 scenario_id=scenario_id
37 )
38 deleted_count, _ = solve_states.delete()
39 # Step 2 (optional): delete Expressions that are now unused (no SolveValues linked)
40 Expression.objects.filter(scenario_id=scenario_id, solveValues__isnull=True).delete()
42 return Response(status=200, data=f"Deleted all uploaded data (SolveStates and SolveValues) for flowsheet {flowsheet_id} and optimization {scenario_id}.")