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
« 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)
12class PortAnchorPlacementViewSet(FlowsheetMutationViewSet):
13 """Manage connection anchors through the standard history-aware CRUD base."""
15 serializer_class = PortAnchorPlacementSerializer
16 history_label = "Move connection anchor"
17 history_kind = FlowsheetEditOperation.Kind.PortAnchor
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
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)
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)