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

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__' 

10 

11 # def create(self, validated_data): 

12 # return Segment.create(**validated_data) 

13 

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 

21 

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): 

28 

29 class Meta: 

30 model = PinchUtility 

31 fields = '__all__' 

32 

33 def create(self, validated_data): 

34 return PinchUtility.create(**validated_data) 

35 

36class PinchInputSerializer(serializers.ModelSerializer): 

37 pinch_utilities = PinchUtilitySerializer(many=True, source='PinchUtilities') 

38 

39 class Meta: 

40 model = PinchInputs 

41 fields = '__all__' 

42 

43 def create(self, validated_data): 

44 return PinchInputs.create(**validated_data)