Coverage for backend/flowsheetInternals/graphicData/serializers/graphicObjectSerializer.py: 57%

24 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-06 23:27 +0000

1from rest_framework import serializers 

2from rest_framework.serializers import ModelSerializer 

3from flowsheetInternals.unitops.serializers.SimulationObjectSerializer import SimulationObjectSerializer 

4from flowsheetInternals.graphicData.models.graphicObjectModel import GraphicObject 

5from drf_spectacular.utils import extend_schema_field 

6from core.auxiliary.enums.unitOpData import SimulationObjectClass 

7 

8 

9class GraphicObjectSerializer(ModelSerializer): 

10 tag = serializers.CharField(max_length=64, default="", allow_blank=True) 

11 simulationObject = SimulationObjectSerializer() 

12 is_flipped = serializers.SerializerMethodField() 

13 

14 class Meta: 

15 model = GraphicObject 

16 fields = '__all__' 

17 read_only_fields = [ 

18 'group', 

19 'simulationObject' 

20 ] 

21 

22 @extend_schema_field(bool) 

23 def get_is_flipped(self, instance: GraphicObject) -> bool: 

24 """ 

25 The object is flipped if there is a negative power flow 

26 """ 

27 if instance.simulationObject.objectType == SimulationObjectClass.EnergyStream: 

28 value = instance.simulationObject.properties.get_property("power").get_value() 

29 if value is not None: 

30 try: 

31 return int(value) < 0 

32 except (ValueError, TypeError): 

33 return False # If value is not a number, we assume it is not flipped 

34 return False