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

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

11 

12 # def create(self, validated_data): 

13 # return Segment.create(**validated_data) 

14 

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 

22 

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

29 

30 class Meta: 

31 model = PinchUtility 

32 fields = '__all__' 

33 

34 def create(self, validated_data): 

35 return PinchUtility.create(**validated_data) 

36 

37class PinchInputSerializer(StateOwnedModelSerializer): 

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

39 

40 class Meta: 

41 model = PinchInputs 

42 fields = '__all__' 

43 

44 def create(self, validated_data): 

45 return PinchInputs.create(**validated_data)