Coverage for backend/core/auxiliary/views/CopyFlowsheetView.py: 73%

22 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-06 23:27 +0000

1 

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, sanitize_flowsheet_id 

11from core.auxiliary.methods.CopyFlowsheet import copy_flowsheet_data 

12from authentication.user.models import User 

13from core.auxiliary.models.Flowsheet import Flowsheet 

14 

15@api_view_validate 

16@extend_schema(parameters=[ 

17 OpenApiParameter(name='flowsheet', type=OpenApiTypes.INT, location=OpenApiParameter.QUERY, description="ID of the flowsheet to copy"), 

18], responses={200: OpenApiTypes.INT}) 

19@api_view(['POST']) 

20def copy_flowsheet(request) -> Response: 

21 flowsheet_id = request.GET.get("flowsheet") 

22 sanitize_flowsheet_id(flowsheet_id) 

23 

24 user: User = request.user 

25 old_flowsheet = Flowsheet.objects.get(pk=flowsheet_id) 

26 new_flowsheet = copy_flowsheet_data(old_flowsheet, user=user) 

27 

28 return Response(data=new_flowsheet.pk, status=200)