Coverage for backend/django/PinchAnalysis/serializers/PinchInputSerializers.py: 71%
34 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 core.serializer_base import StateOwnedModelSerializer
2from rest_framework import serializers
3from PinchAnalysis.models.InputModels import PinchInputs, Segment, PinchUtility
4from drf_spectacular.utils import extend_schema_field
5class SegmentSerializer(StateOwnedModelSerializer):
6 zone = serializers.SerializerMethodField()
7 stream_data_entry = serializers.PrimaryKeyRelatedField(read_only=True)
8 class Meta:
9 model = Segment
10 fields = '__all__'
12 # def create(self, validated_data):
13 # return Segment.create(**validated_data)
15 def update(self, instance, validated_data):
16 inst = super().update(instance, validated_data)
17 # Recompute area if any of the inputs changed
18 if any(k in validated_data for k in ("htc","t_supply","t_target","heat_flow")):
19 inst.area = inst._calc_area()
20 inst.save(update_fields=["area"])
21 return inst
23 def get_zone(self, obj):
24 zone_object = obj.zone_object
25 if zone_object is None: 25 ↛ 26line 25 didn't jump to line 26 because the condition on line 25 was never true
26 return "Flowsheet"
27 return f"{zone_object.simulationObject.componentName} - {zone_object.abstractionType}"
28class PinchUtilitySerializer(StateOwnedModelSerializer):
30 class Meta:
31 model = PinchUtility
32 fields = '__all__'
34 def create(self, validated_data):
35 return PinchUtility.create(**validated_data)
37class PinchInputSerializer(StateOwnedModelSerializer):
38 pinch_utilities = PinchUtilitySerializer(many=True, source='PinchUtilities')
40 class Meta:
41 model = PinchInputs
42 fields = '__all__'
44 def create(self, validated_data):
45 return PinchInputs.create(**validated_data)