Coverage for backend/django/core/auxiliary/serializers/ScenarioSerializer.py: 100%

42 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-06-23 21:51 +0000

1from rest_framework import serializers 

2from drf_spectacular.utils import extend_schema_field 

3from core.auxiliary.property_state import ( 

4 validate_objective_property, 

5 validate_optimization_dof_property_value, 

6) 

7from core.auxiliary.models.Scenario import ( 

8 Scenario, 

9 OptimizationDegreesOfFreedom, 

10 ParameterSweepDefinition, 

11 ParameterSweepParameter, 

12) 

13 

14 

15class OptimizationDegreesOfFreedomSerializer(serializers.ModelSerializer): 

16 simulationObjectId = serializers.IntegerField(source='propertyValue.property.set.simulationObject.id', read_only=True) 

17 isFreeVariable = serializers.SerializerMethodField() 

18 

19 class Meta: 

20 model = OptimizationDegreesOfFreedom 

21 fields = '__all__' 

22 

23 def validate_propertyValue(self, value): 

24 validate_optimization_dof_property_value(value) 

25 return value 

26 

27 def get_isFreeVariable(self, obj: OptimizationDegreesOfFreedom) -> bool: 

28 if getattr(obj, "propertyValue", None) is None: 

29 return False 

30 return (obj.propertyValue.enabled and not hasattr(obj.propertyValue,"controlManipulated")) or hasattr(obj.propertyValue, "controlSetPoint") 

31 

32 

33class ParameterSweepParameterSerializer(serializers.ModelSerializer): 

34 class Meta: 

35 model = ParameterSweepParameter 

36 fields = '__all__' 

37 

38 

39class ParameterSweepDefinitionSerializer(serializers.ModelSerializer): 

40 parameters = ParameterSweepParameterSerializer(many=True, read_only=True) 

41 

42 class Meta: 

43 model = ParameterSweepDefinition 

44 fields = '__all__' 

45 

46 

47class ScenarioSerializer(serializers.ModelSerializer): 

48 degreesOfFreedom = OptimizationDegreesOfFreedomSerializer(many=True, required=False) 

49 parameterSweepDefinition = serializers.SerializerMethodField() 

50 

51 class Meta: 

52 model = Scenario 

53 fields = '__all__' 

54 

55 @extend_schema_field(ParameterSweepDefinitionSerializer(allow_null=True)) 

56 def get_parameterSweepDefinition(self, obj: Scenario) -> dict | None: 

57 try: 

58 definition = obj.parameterSweepDefinition 

59 except ParameterSweepDefinition.DoesNotExist: 

60 return None 

61 return ParameterSweepDefinitionSerializer(definition).data 

62 

63 def validate_objective(self, value): 

64 validate_objective_property(value) 

65 return value