This commit is contained in:
2026-04-29 01:27:16 +03:30
parent a75c4ca9c8
commit f0f2ac34b7
20 changed files with 2840 additions and 65 deletions
+19 -4
View File
@@ -13,8 +13,19 @@ class SensorExternalRequestSerializer(serializers.Serializer):
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)
page = serializers.IntegerField(min_value=1)
page_size = serializers.IntegerField(min_value=1, max_value=100)
physical_device_uuid = serializers.UUIDField(required=False)
sensor_type = serializers.CharField(required=False, allow_blank=False)
date_from = serializers.DateField(required=False)
date_to = serializers.DateField(required=False)
def validate(self, attrs):
date_from = attrs.get("date_from")
date_to = attrs.get("date_to")
if date_from and date_to and date_from > date_to:
raise serializers.ValidationError({"date_to": "date_to must be greater than or equal to date_from."})
return attrs
class SensorExternalRequestLogSerializer(serializers.ModelSerializer):
@@ -36,14 +47,18 @@ class SensorExternalRequestLogSerializer(serializers.ModelSerializer):
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))
farm_sensor = farm_sensor_map.get(
(obj.farm_uuid, obj.sensor_catalog_uuid, obj.physical_device_uuid)
) or farm_sensor_map.get((obj.farm_uuid, None, 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))
farm_sensor = farm_sensor_map.get(
(obj.farm_uuid, obj.sensor_catalog_uuid, obj.physical_device_uuid)
) or farm_sensor_map.get((obj.farm_uuid, None, 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