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

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 

7 

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

16 

17 

18 

19 class Meta: 

20 model = Grouping 

21 fields = '__all__' 

22 

23 

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) 

31 

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 

37 

38 

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()]