mirror of
				https://github.com/evraz-hack/backend.git
				synced 2025-10-30 23:27:26 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from rest_framework import serializers
 | |
| 
 | |
| from exhauster_analytics.analytics.models import Exgauster
 | |
| 
 | |
| 
 | |
| class ExgausterSerializer(serializers.ModelSerializer):
 | |
|     signals = serializers.SerializerMethodField()
 | |
| 
 | |
|     def get_signals(self, obj: Exgauster) -> dict:
 | |
|         res = {}
 | |
|         for signal in obj.signals.all():
 | |
|             data = {
 | |
|                 "name": signal.name,
 | |
|                 "type": signal.type,
 | |
|                 "description": signal.comment,
 | |
|             }
 | |
|             if signal.item not in res:
 | |
|                 res[signal.item] = {}
 | |
|             if (
 | |
|                 signal.characteristics
 | |
|                 and signal.characteristics not in res[signal.item]
 | |
|             ):
 | |
|                 res[signal.item][signal.characteristics] = {}
 | |
|             if (
 | |
|                 signal.characteristics_description
 | |
|                 and signal.characteristics_description
 | |
|                 not in res[signal.item][signal.characteristics]
 | |
|             ):
 | |
|                 res[signal.item][signal.characteristics][
 | |
|                     signal.characteristics_description
 | |
|                 ] = {}
 | |
| 
 | |
|             if signal.characteristics_description:
 | |
|                 res[signal.item][signal.characteristics][
 | |
|                     signal.characteristics_description
 | |
|                 ][signal.item_name] = data
 | |
|             elif signal.characteristics:
 | |
|                 res[signal.item][signal.characteristics][signal.item_name] = data
 | |
|             else:
 | |
|                 res[signal.item][signal.item_name] = data
 | |
|         return res
 | |
| 
 | |
|     class Meta:
 | |
|         model = Exgauster
 | |
|         fields = ["number", "name", "signals"]
 | |
| 
 | |
| 
 | |
| class ExgausterSignalSerializer(serializers.Serializer):
 | |
|     approximation = serializers.ChoiceField(choices=[1, 10, 30, 60], required=False)
 | |
|     time_from = serializers.DateTimeField(required=False)
 | |
|     time_until = serializers.DateTimeField(required=False)
 | |
|     signals = serializers.ListSerializer(child=serializers.CharField(max_length=30))
 |