Coverage for backend/django/flowsheetInternals/graphicData/serializers/groupingSerializer.py: 79%

33 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 flowsheetInternals.unitops.models.SimulationObject import SimulationObject 

4from flowsheetInternals.graphicData.models.groupingModel import Grouping 

5from core.auxiliary.models.PropertyInfo import PropertyInfo 

6from rest_framework.response import Response 

7from drf_spectacular.utils import extend_schema_field 

8 

9class GroupingSerializer(StateOwnedModelSerializer): 

10 x = serializers.FloatField(write_only=True, default=0.0, required=False) 

11 y = serializers.FloatField(write_only=True, default=0.0, required=False) 

12 width = serializers.FloatField(write_only=True, default=0.0, required=False) 

13 height = serializers.FloatField(write_only=True, default=0.0, required=False) 

14 offsetX = serializers.FloatField(write_only=True, default=0.0, required=False) 

15 offsetY = serializers.FloatField(write_only=True, default=0.0, required=False) 

16 propertyInfoRelations = serializers.SerializerMethodField() 

17 

18 

19 

20 class Meta: 

21 model = Grouping 

22 fields = '__all__' 

23 

24 

25 def update(self, instance: Grouping, validated_data) -> Grouping: 

26 simulationObjectInstances = [] 

27 simulationObjects = validated_data.pop('_simulationObjects', None) 

28 if simulationObjects is not None: 28 ↛ 29line 28 didn't jump to line 29 because the condition on line 28 was never true

29 for simObj in simulationObjects: 

30 simulationObjectInstances.append(SimulationObject.objects.get(pk=simObj)) 

31 instance.update_internal_graphic_objects([simObjInstance.graphicObject.first() for simObjInstance in simulationObjectInstances]) 

32 

33 propertyInfos_data = validated_data.pop('propertyInfos', None) 

34 if propertyInfos_data is not None: 34 ↛ 35line 34 didn't jump to line 35 because the condition on line 34 was never true

35 instance.propertyInfos.set(propertyInfos_data) 

36 instance.save() 

37 return instance 

38 

39 

40 @extend_schema_field(serializers.ListField(child=serializers.ListField(child=serializers.IntegerField()))) 

41 def get_propertyInfoRelations(self, obj: Grouping): 

42 return [[propertyInfo.id, propertyInfo.set.simulationObject.id] for propertyInfo in obj.propertyInfos.all()]