Coverage for backend/django/core/auxiliary/views/DeleteMSSData.py: 71%
26 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-05-13 02:47 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-05-13 02:47 +0000
2from rest_framework.response import Response
3from core.auxiliary.models.DataRow import DataRow
4from drf_spectacular.utils import extend_schema
5from core.auxiliary.models.DataColumn import DataColumn
6from rest_framework.decorators import api_view
7from rest_framework import serializers, status
8from core.validation import api_view_validate
9from core.managers import get_flowsheet_access
12class DeleteDataSerializer(serializers.Serializer):
13 # THe data format is e.g:
14 # {
15 # "data": {
16 # "heater_enthalpy": [1, 2, 3, 4, 5],
17 # "heater_temperature": [1, 2, 3, 4, 5]
18 # }
19 # "flowsheet": 1
20 # }
21 flowsheet = serializers.IntegerField()
22 scenario = serializers.IntegerField()
24@api_view_validate
25@extend_schema(request=DeleteDataSerializer, responses=None)
26@api_view(['POST'])
27def delete_data(request) -> Response:
28 flowsheet_id = request.GET.get("flowsheet")
29 access_state = get_flowsheet_access(request.user, flowsheet_id)
30 if access_state.has_read_access and not access_state.has_write_access: 30 ↛ 36line 30 didn't jump to line 36 because the condition on line 30 was always true
31 return Response(
32 {"error": "This flowsheet is shared with read-only access."},
33 status=status.HTTP_403_FORBIDDEN,
34 )
36 serializer = DeleteDataSerializer(data=request.data)
37 serializer.is_valid(raise_exception=True)
38 flowsheet_id = serializer.validated_data["flowsheet"]
39 scenario_id = serializer.validated_data["scenario"]
41 DataRow.objects.filter(
42 flowsheet_id=flowsheet_id,
43 scenario_id=scenario_id
44 ).delete()
45 # Step 2 (optional): delete DataColumns that are now unused (no DataCells linked)
46 DataColumn.objects.filter(scenario_id=scenario_id, dataCells__isnull=True).delete()
48 return Response(status=200, data=f"Deleted all uploaded data (DataRows and DataCells) for flowsheet {flowsheet_id} and scenario {scenario_id}.")