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

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 

9 

10 

11class PropertyHistorySerializer(StateOwnedModelSerializer): 

12 class Meta: 

13 model = HistoricalValue 

14 fields = ['value'] 

15 read_only_fields = ['value'] 

16 

17 

18class PropertyInfoSerializer(StateOwnedModelSerializer): 

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

20 recycleConnection = RecyclePropertySerializer(read_only=True) 

21 

22 class Meta: 

23 model = PropertyInfo 

24 fields = '__all__' 

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

26 

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

28 reject_property_update(self.instance, attrs) 

29 return super().validate(attrs) 

30 

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) 

36 

37 return instance 

38 

39 

40class PropertySetSerializer(StateOwnedModelSerializer): 

41 ContainedProperties = PropertyInfoSerializer(many=True) 

42 unspecifiedProperties = serializers.SerializerMethodField() 

43 

44 class Meta: 

45 model = PropertySet 

46 read_only_fields = ['id'] 

47 fields = '__all__' 

48 

49 def get_unspecifiedProperties(self, instance: PropertySet): 

50 return instance.get_unspecified_properties()