Coverage for backend/flowsheetInternals/graphicData/serializers/groupingSerializer.py: 53%
32 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 flowsheetInternals.unitops.models.SimulationObject import SimulationObject
3from flowsheetInternals.graphicData.models.groupingModel import Grouping
4from core.auxiliary.models.PropertyInfo import PropertyInfo
5from rest_framework.response import Response
6from drf_spectacular.utils import extend_schema_field
8class GroupingSerializer(serializers.ModelSerializer):
9 x = serializers.FloatField(write_only=True, default=0.0, required=False)
10 y = serializers.FloatField(write_only=True, default=0.0, required=False)
11 width = serializers.FloatField(write_only=True, default=0.0, required=False)
12 height = serializers.FloatField(write_only=True, default=0.0, required=False)
13 offsetX = serializers.FloatField(write_only=True, default=0.0, required=False)
14 offsetY = serializers.FloatField(write_only=True, default=0.0, required=False)
15 propertyInfoRelations = serializers.SerializerMethodField()
19 class Meta:
20 model = Grouping
21 fields = '__all__'
24 def update(self, instance: Grouping, validated_data) -> Grouping:
25 simulationObjectInstances = []
26 simulationObjects = validated_data.pop('_simulationObjects', None)
27 if simulationObjects is not None:
28 for simObj in simulationObjects:
29 simulationObjectInstances.append(SimulationObject.objects.get(pk=simObj))
30 instance.update_internal_simulation_objects(simulationObjectInstances)
32 propertyInfos_data = validated_data.pop('propertyInfos', None)
33 if propertyInfos_data is not None:
34 instance.propertyInfos.set(propertyInfos_data)
35 instance.save()
36 return instance
39 @extend_schema_field(serializers.ListField(child=serializers.ListField(child=serializers.IntegerField())))
40 def get_propertyInfoRelations(self, obj: Grouping):
41 return [[propertyInfo.id, propertyInfo.set.simulationObject.id] for propertyInfo in obj.propertyInfos.all()]