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
« 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
10class CompoundUpdateSerializer(serializers.Serializer):
11 basis = serializers.CharField()
12 flowType = serializers.CharField()
13 value = serializers.CharField(allow_blank=True)
15class PropertyInfoViewSet(ModelViewSet):
16 serializer_class = PropertyInfoSerializer
18 def get_queryset(self):
19 return PropertyInfo.objects.all()
21class HistoryViewSet(ReadOnlyModelViewSet):
22 serializer_class = PropertyHistorySerializer
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
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)