Coverage for backend/django/core/auxiliary/views/DeleteMSSData.py: 97%
31 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
2from rest_framework.response import Response
3from django.db import transaction
4from drf_spectacular.utils import extend_schema
5from core.auxiliary.models.Scenario import Scenario, ScenarioInputModeEnum
6from core.auxiliary.services.parameter_sweep import clear_mss_input_data
7from rest_framework.decorators import api_view
8from rest_framework import serializers, status
9from core.validation import api_view_validate
10from core.managers import get_flowsheet_access
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 flowsheet_id = request.GET.get("flowsheet")
30 access_state = get_flowsheet_access(request.user, flowsheet_id)
31 if access_state.has_read_access and not access_state.has_write_access:
32 return Response(
33 {"error": "This flowsheet is shared with read-only access."},
34 status=status.HTTP_403_FORBIDDEN,
35 )
37 serializer = DeleteDataSerializer(data=request.data)
38 serializer.is_valid(raise_exception=True)
39 flowsheet_id = serializer.validated_data["flowsheet"]
40 scenario_id = serializer.validated_data["scenario"]
42 with transaction.atomic():
43 scenario = Scenario.objects.filter(id=scenario_id, flowsheet_id=flowsheet_id).first()
44 if scenario is not None: 44 ↛ 49line 44 didn't jump to line 49
45 clear_mss_input_data(scenario)
46 scenario.mss_input_mode = ScenarioInputModeEnum.Csv
47 scenario.save(update_fields=["mss_input_mode"])
49 return Response(status=200, data=f"Deleted all uploaded data (DataRows and DataCells) for flowsheet {flowsheet_id} and scenario {scenario_id}.")