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

43 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 drf_spectacular.utils import extend_schema_field 

4from core.auxiliary.property_state import ( 

5 validate_objective_property, 

6 validate_optimization_dof_property_value, 

7) 

8from core.auxiliary.models.Scenario import ( 

9 Scenario, 

10 OptimizationDegreesOfFreedom, 

11 ParameterSweepDefinition, 

12 ParameterSweepParameter, 

13) 

14 

15 

16class OptimizationDegreesOfFreedomSerializer(StateOwnedModelSerializer): 

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

18 isFreeVariable = serializers.SerializerMethodField() 

19 

20 class Meta: 

21 model = OptimizationDegreesOfFreedom 

22 fields = '__all__' 

23 

24 def validate_propertyValue(self, value): 

25 validate_optimization_dof_property_value(value) 

26 return value 

27 

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

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

30 return False 

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

32 

33 

34class ParameterSweepParameterSerializer(StateOwnedModelSerializer): 

35 class Meta: 

36 model = ParameterSweepParameter 

37 fields = '__all__' 

38 

39 

40class ParameterSweepDefinitionSerializer(StateOwnedModelSerializer): 

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

42 

43 class Meta: 

44 model = ParameterSweepDefinition 

45 fields = '__all__' 

46 

47 

48class ScenarioSerializer(StateOwnedModelSerializer): 

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

50 parameterSweepDefinition = serializers.SerializerMethodField() 

51 

52 class Meta: 

53 model = Scenario 

54 fields = '__all__' 

55 

56 @extend_schema_field(ParameterSweepDefinitionSerializer(allow_null=True)) 

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

58 try: 

59 definition = obj.parameterSweepDefinition 

60 except ParameterSweepDefinition.DoesNotExist: 

61 return None 

62 return ParameterSweepDefinitionSerializer(definition).data 

63 

64 def validate_objective(self, value): 

65 validate_objective_property(value) 

66 return value