Coverage for backend/django/flowsheetInternals/graphicData/viewsets/PortAnchorPlacementViewSet.py: 83%

21 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-07-22 05:22 +0000

1from drf_spectacular.utils import OpenApiParameter, OpenApiTypes, extend_schema 

2from flowsheetInternals.graphicData.models.portAnchorPlacementModel import PortAnchorPlacement 

3from flowsheetInternals.graphicData.serializers.portAnchorPlacementSerializer import PortAnchorPlacementSerializer 

4from flowsheetInternals.unitops.models.FlowsheetEditOperation import ( 

5 FlowsheetEditOperation, 

6) 

7from flowsheetInternals.unitops.services.edit_operations.mixins import ( 

8 FlowsheetMutationViewSet, 

9) 

10 

11 

12class PortAnchorPlacementViewSet(FlowsheetMutationViewSet): 

13 """Manage connection anchors through the standard history-aware CRUD base.""" 

14 

15 serializer_class = PortAnchorPlacementSerializer 

16 history_label = "Move connection anchor" 

17 history_kind = FlowsheetEditOperation.Kind.PortAnchor 

18 

19 def get_queryset(self): 

20 queryset = PortAnchorPlacement.objects.select_related("port", "grouping", "graphicObject") 

21 grouping = self.request.query_params.get("group") 

22 if grouping is not None: 22 ↛ 23line 22 didn't jump to line 23 because the condition on line 22 was never true

23 queryset = queryset.filter(grouping_id=grouping) 

24 return queryset 

25 

26 @extend_schema( 

27 parameters=[ 

28 OpenApiParameter(name="flowsheet", required=True, type=OpenApiTypes.INT), 

29 OpenApiParameter(name="group", required=False, type=OpenApiTypes.INT), 

30 ] 

31 ) 

32 def list(self, request): 

33 return super().list(request) 

34 

35 @extend_schema( 

36 parameters=[ 

37 OpenApiParameter(name="flowsheet", required=True, type=OpenApiTypes.INT), 

38 ] 

39 ) 

40 def create(self, request, *args, **kwargs): 

41 """Expose the standard flowsheet context in the generated API schema.""" 

42 return super().create(request, *args, **kwargs)