Coverage for backend/core/auxiliary/viewsets/PropertyInfoViewSet.py: 68%

32 statements  

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

1from core.viewset import ModelViewSet, ReadOnlyModelViewSet 

2from rest_framework import serializers 

3from ..serializers.PropertyInfoSerializer import PropertyInfoSerializer, PropertyHistorySerializer 

4from ..models import PropertyInfo, HistoricalValue 

5from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes 

6from rest_framework.decorators import action 

7from rest_framework.response import Response 

8from rest_framework.exceptions import NotFound, ValidationError 

9 

10class CompoundUpdateSerializer(serializers.Serializer): 

11 basis = serializers.CharField() 

12 flowType = serializers.CharField() 

13 value = serializers.CharField(allow_blank=True) 

14 

15class PropertyInfoViewSet(ModelViewSet): 

16 serializer_class = PropertyInfoSerializer 

17 

18 def get_queryset(self): 

19 return PropertyInfo.objects.all() 

20 

21class HistoryViewSet(ReadOnlyModelViewSet): 

22 serializer_class = PropertyHistorySerializer 

23 

24 @extend_schema( 

25 parameters=[ 

26 OpenApiParameter(name="property", required=True, type=OpenApiTypes.INT), 

27 ] 

28 ) 

29 def get_queryset(self): 

30 # Filter to only the history of a specific property, e.g material stream flowrate 

31 queryset = HistoricalValue.objects.all() 

32 property = self.request.query_params.get("property") 

33 if property is not None: 

34 queryset = queryset.filter(property=property) 

35 return queryset 

36 

37 

38 @extend_schema( 

39 parameters=[ 

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

41 ] 

42 ) 

43 @action(detail=False, methods=['delete']) 

44 def delete(self,request): 

45 # Delete all  

46 id = self.request.query_params.get("flowsheet") 

47 HistoricalValue.objects.select_related("property__set__setOwner__id").filter(property__set__setOwner__flowsheet__id=id).delete() 

48 HistoricalValue.objects.select_related("property__set__msSetOwner__id").filter(property__set__msSetOwner__flowsheet__id=id).delete() 

49 return Response(status=204)