Coverage for backend/django/core/auxiliary/serializers/PropertyInfoSerializer.py: 100%
38 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.models.PropertyInfo import PropertyInfo, HistoricalValue
5from core.auxiliary.models.PropertySet import PropertySet
6from core.auxiliary.property_state import reject_property_update
7from .PropertyValueSerializer import PropertyValueSerializer
8from .RecycleDataSerializer import RecyclePropertySerializer
11class PropertyHistorySerializer(StateOwnedModelSerializer):
12 class Meta:
13 model = HistoricalValue
14 fields = ['value']
15 read_only_fields = ['value']
18class PropertyInfoSerializer(StateOwnedModelSerializer):
19 values = PropertyValueSerializer(many=True, read_only=True)
20 recycleConnection = RecyclePropertySerializer(read_only=True)
22 class Meta:
23 model = PropertyInfo
24 fields = '__all__'
25 read_only_fields = ['id', 'key', 'set']
27 def validate(self, attrs: dict) -> dict:
28 reject_property_update(self.instance, attrs)
29 return super().validate(attrs)
31 def update(self, instance: PropertyInfo, validated_data: dict):
32 reject_property_update(instance, validated_data)
33 if "unit" in validated_data:
34 instance.unit_conversion(validated_data.pop("unit"))
35 super().update(instance, validated_data)
37 return instance
40class PropertySetSerializer(StateOwnedModelSerializer):
41 ContainedProperties = PropertyInfoSerializer(many=True)
42 unspecifiedProperties = serializers.SerializerMethodField()
44 class Meta:
45 model = PropertySet
46 read_only_fields = ['id']
47 fields = '__all__'
49 def get_unspecifiedProperties(self, instance: PropertySet):
50 return instance.get_unspecified_properties()