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