UPDATE
This commit is contained in:
@@ -1,5 +1,86 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from farm_hub.models import FarmSensor
|
||||
from sensor_catalog.models import SensorCatalog
|
||||
|
||||
from .models import SensorExternalRequestLog
|
||||
|
||||
|
||||
class SensorExternalRequestSerializer(serializers.Serializer):
|
||||
uuid = serializers.UUIDField()
|
||||
payload = serializers.JSONField(required=False, default=dict)
|
||||
|
||||
|
||||
class SensorExternalRequestLogQuerySerializer(serializers.Serializer):
|
||||
farm_uuid = serializers.UUIDField()
|
||||
page = serializers.IntegerField(required=False, min_value=1, default=1)
|
||||
page_size = serializers.IntegerField(required=False, min_value=1, max_value=100, default=20)
|
||||
|
||||
|
||||
class SensorExternalRequestLogSerializer(serializers.ModelSerializer):
|
||||
farm_sensor = serializers.SerializerMethodField()
|
||||
sensor_catalog = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = SensorExternalRequestLog
|
||||
fields = [
|
||||
"id",
|
||||
"farm_uuid",
|
||||
"sensor_catalog_uuid",
|
||||
"physical_device_uuid",
|
||||
"farm_sensor",
|
||||
"sensor_catalog",
|
||||
"payload",
|
||||
"created_at",
|
||||
]
|
||||
|
||||
def get_farm_sensor(self, obj):
|
||||
farm_sensor_map = self.context.get("farm_sensor_map", {})
|
||||
farm_sensor = farm_sensor_map.get((obj.farm_uuid, obj.sensor_catalog_uuid, obj.physical_device_uuid))
|
||||
if farm_sensor is None:
|
||||
return None
|
||||
return FarmSensorLogSerializer(farm_sensor).data
|
||||
|
||||
def get_sensor_catalog(self, obj):
|
||||
farm_sensor_map = self.context.get("farm_sensor_map", {})
|
||||
farm_sensor = farm_sensor_map.get((obj.farm_uuid, obj.sensor_catalog_uuid, obj.physical_device_uuid))
|
||||
if farm_sensor is None or farm_sensor.sensor_catalog is None:
|
||||
return None
|
||||
return SensorCatalogLogSerializer(farm_sensor.sensor_catalog).data
|
||||
|
||||
|
||||
class FarmSensorLogSerializer(serializers.ModelSerializer):
|
||||
sensor_catalog_uuid = serializers.UUIDField(source="sensor_catalog.uuid", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = FarmSensor
|
||||
fields = [
|
||||
"uuid",
|
||||
"sensor_catalog_uuid",
|
||||
"physical_device_uuid",
|
||||
"name",
|
||||
"sensor_type",
|
||||
"is_active",
|
||||
"specifications",
|
||||
"power_source",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
|
||||
|
||||
class SensorCatalogLogSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = SensorCatalog
|
||||
fields = [
|
||||
"uuid",
|
||||
"code",
|
||||
"name",
|
||||
"description",
|
||||
"customizable_fields",
|
||||
"supported_power_sources",
|
||||
"returned_data_fields",
|
||||
"sample_payload",
|
||||
"is_active",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user