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

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 

8 

9 

10class PropertyHistorySerializer(serializers.ModelSerializer): 

11 class Meta: 

12 model = HistoricalValue 

13 fields = ['value'] 

14 read_only_fields = ['value'] 

15 

16 

17class PropertyInfoSerializer(serializers.ModelSerializer): 

18 values = PropertyValueSerializer(many=True, read_only=True) 

19 recycleConnection = RecyclePropertySerializer(read_only=True) 

20 

21 class Meta: 

22 model = PropertyInfo 

23 fields = '__all__' 

24 read_only_fields = ['id', 'key', 'set'] 

25 

26 def validate(self, attrs: dict) -> dict: 

27 reject_property_update(self.instance, attrs) 

28 return super().validate(attrs) 

29 

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) 

35 

36 return instance 

37 

38class PropertySetSerializer(serializers.ModelSerializer): 

39 ContainedProperties = PropertyInfoSerializer(many=True) 

40 unspecifiedProperties = serializers.SerializerMethodField() 

41 

42 class Meta: 

43 model = PropertySet 

44 read_only_fields = ['id'] 

45 fields = '__all__' 

46 

47 def get_unspecifiedProperties(self, instance: PropertySet): 

48 return instance.get_unspecified_properties()