Coverage for backend/django/PinchAnalysis/serializers/PinchInputSerializers.py: 70%
33 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-12-18 04:00 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-12-18 04:00 +0000
1from rest_framework import serializers
2from PinchAnalysis.models.InputModels import PinchInputs, Segment, PinchUtility
3from drf_spectacular.utils import extend_schema_field
4class SegmentSerializer(serializers.ModelSerializer):
5 zone = serializers.SerializerMethodField()
6 stream_data_entry = serializers.PrimaryKeyRelatedField(read_only=True)
7 class Meta:
8 model = Segment
9 fields = '__all__'
11 # def create(self, validated_data):
12 # return Segment.create(**validated_data)
14 def update(self, instance, validated_data):
15 inst = super().update(instance, validated_data)
16 # Recompute area if any of the inputs changed
17 if any(k in validated_data for k in ("htc","t_supply","t_target","heat_flow")):
18 inst.area = inst._calc_area()
19 inst.save(update_fields=["area"])
20 return inst
22 def get_zone(self, obj):
23 zone_object = obj.zone_object
24 if zone_object is None: 24 ↛ 25line 24 didn't jump to line 25 because the condition on line 24 was never true
25 return "Flowsheet"
26 return f"{zone_object.simulationObject.componentName} - {zone_object.abstractionType}"
27class PinchUtilitySerializer(serializers.ModelSerializer):
29 class Meta:
30 model = PinchUtility
31 fields = '__all__'
33 def create(self, validated_data):
34 return PinchUtility.create(**validated_data)
36class PinchInputSerializer(serializers.ModelSerializer):
37 pinch_utilities = PinchUtilitySerializer(many=True, source='PinchUtilities')
39 class Meta:
40 model = PinchInputs
41 fields = '__all__'
43 def create(self, validated_data):
44 return PinchInputs.create(**validated_data)