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
« 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)
15class OptimizationDegreesOfFreedomSerializer(serializers.ModelSerializer):
16 simulationObjectId = serializers.IntegerField(source='propertyValue.property.set.simulationObject.id', read_only=True)
17 isFreeVariable = serializers.SerializerMethodField()
19 class Meta:
20 model = OptimizationDegreesOfFreedom
21 fields = '__all__'
23 def validate_propertyValue(self, value):
24 validate_optimization_dof_property_value(value)
25 return value
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")
33class ParameterSweepParameterSerializer(serializers.ModelSerializer):
34 class Meta:
35 model = ParameterSweepParameter
36 fields = '__all__'
39class ParameterSweepDefinitionSerializer(serializers.ModelSerializer):
40 parameters = ParameterSweepParameterSerializer(many=True, read_only=True)
42 class Meta:
43 model = ParameterSweepDefinition
44 fields = '__all__'
47class ScenarioSerializer(serializers.ModelSerializer):
48 degreesOfFreedom = OptimizationDegreesOfFreedomSerializer(many=True, required=False)
49 parameterSweepDefinition = serializers.SerializerMethodField()
51 class Meta:
52 model = Scenario
53 fields = '__all__'
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
63 def validate_objective(self, value):
64 validate_objective_property(value)
65 return value