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
« 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
9class GraphicObjectSerializer(ModelSerializer):
10 tag = serializers.CharField(max_length=64, default="", allow_blank=True)
11 simulationObject = SimulationObjectSerializer()
12 is_flipped = serializers.SerializerMethodField()
14 class Meta:
15 model = GraphicObject
16 fields = '__all__'
17 read_only_fields = [
18 'group',
19 'simulationObject'
20 ]
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