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
« 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)
16class OptimizationDegreesOfFreedomSerializer(StateOwnedModelSerializer):
17 simulationObjectId = serializers.IntegerField(source='propertyValue.property.set.simulationObject.id', read_only=True)
18 isFreeVariable = serializers.SerializerMethodField()
20 class Meta:
21 model = OptimizationDegreesOfFreedom
22 fields = '__all__'
24 def validate_propertyValue(self, value):
25 validate_optimization_dof_property_value(value)
26 return value
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")
34class ParameterSweepParameterSerializer(StateOwnedModelSerializer):
35 class Meta:
36 model = ParameterSweepParameter
37 fields = '__all__'
40class ParameterSweepDefinitionSerializer(StateOwnedModelSerializer):
41 parameters = ParameterSweepParameterSerializer(many=True, read_only=True)
43 class Meta:
44 model = ParameterSweepDefinition
45 fields = '__all__'
48class ScenarioSerializer(StateOwnedModelSerializer):
49 degreesOfFreedom = OptimizationDegreesOfFreedomSerializer(many=True, required=False)
50 parameterSweepDefinition = serializers.SerializerMethodField()
52 class Meta:
53 model = Scenario
54 fields = '__all__'
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
64 def validate_objective(self, value):
65 validate_objective_property(value)
66 return value