Coverage for backend/django/core/auxiliary/viewsets/RecycleDataViewSet.py: 95%

33 statements  

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

1from core.viewset import ModelViewSet 

2from drf_spectacular.utils import extend_schema 

3from drf_spectacular.types import OpenApiTypes 

4from drf_spectacular.openapi import OpenApiParameter 

5from ..serializers.RecycleDataSerializer import ( 

6 RecycleDataSerializer, 

7 RecyclePropertySerializer, 

8) 

9from ..models.RecycleData import RecycleData, RecycleProperty 

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

11 FlowsheetHistoryUpdateMixin, 

12) 

13 

14 

15class RecycleDataViewSet(FlowsheetHistoryUpdateMixin, ModelViewSet): 

16 serializer_class = RecycleDataSerializer 

17 history_label = "Change recycle connection" 

18 

19 def get_queryset(self): 

20 if hasattr(self, "_cached_queryset"): 

21 return self._cached_queryset 

22 

23 from flowsheetInternals.graphicData.models.graphicObjectModel import ( 

24 GraphicObject, 

25 ) 

26 

27 queryset = RecycleData.objects.all() 

28 projectId = self.request.query_params.get("projectId", None) 

29 if projectId is not None: 29 ↛ 30line 29 didn't jump to line 30 because the condition on line 29 was never true

30 queryset = queryset.filter( 

31 simulationObject__flowsheet_state__flowsheet_id=projectId 

32 ) 

33 

34 groupId = self.request.query_params.get("group", None) 

35 if groupId is not None: 

36 graphicObjects = GraphicObject.objects.filter(group=groupId).select_related( 

37 "simulationObject" 

38 ) 

39 simulation_object_ids = [ 

40 graphicObject.simulationObject.id for graphicObject in graphicObjects 

41 ] 

42 queryset = queryset.filter(simulationObject__id__in=simulation_object_ids) 

43 

44 self._cached_queryset = queryset 

45 return queryset 

46 

47 @extend_schema( 

48 parameters=[ 

49 OpenApiParameter(name="projectId", required=False, type=OpenApiTypes.INT), 

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

51 ] 

52 ) 

53 def list(self, request): 

54 return super().list(request) 

55 

56 

57class RecyclePropertyViewSet(FlowsheetHistoryUpdateMixin, ModelViewSet): 

58 serializer_class = RecyclePropertySerializer 

59 history_label = "Change recycle property" 

60 

61 def get_queryset(self): 

62 return RecycleProperty.objects.all()