Files
Backend/yield_harvest/serializers.py
T

89 lines
3.1 KiB
Python
Raw Normal View History

2026-04-10 16:12:51 +03:30
from rest_framework import serializers
2026-04-11 03:54:15 +03:30
from .mock_data import CONFIG_SLIDERS_ONLY
START_ENVIRONMENT_KEYS = [
item["key"]
for item in CONFIG_SLIDERS_ONLY["sliders"]
if item["key"] != "growth_speed"
]
def _defaults_from_sliders():
return {
item["key"]: item["default_value"]
for item in CONFIG_SLIDERS_ONLY["sliders"]
}
START_REQUEST_EXAMPLE = {
"environment": {
key: value for key, value in _defaults_from_sliders().items() if key != "growth_speed"
},
"growth_speed": _defaults_from_sliders().get("growth_speed", 1.5),
}
START_REQUEST_EXAMPLE_STATIC = {
"environment": {
"light": 75,
"water": 65,
"soil_ph": 6.5,
},
"growth_speed": 1.5,
}
def success_response():
return {"status": "success"}
def success_with_data(data):
return {"status": "success", "data": data}
2026-04-10 16:12:51 +03:30
class YieldPredictionCardSerializer(serializers.Serializer):
id = serializers.CharField(required=False, allow_blank=True)
title = serializers.CharField(required=False, allow_blank=True)
subtitle = serializers.CharField(required=False, allow_blank=True)
stats = serializers.CharField(required=False, allow_blank=True)
avatarColor = serializers.CharField(required=False, allow_blank=True)
avatarIcon = serializers.CharField(required=False, allow_blank=True)
chipText = serializers.CharField(required=False, allow_blank=True)
chipColor = serializers.CharField(required=False, allow_blank=True)
class ChartSeriesSerializer(serializers.Serializer):
name = serializers.CharField(required=False, allow_blank=True)
data = serializers.ListField(child=serializers.FloatField(), required=False)
class ChartSummaryItemSerializer(serializers.Serializer):
title = serializers.CharField(required=False, allow_blank=True)
subtitle = serializers.CharField(required=False, allow_blank=True)
amount = serializers.CharField(required=False, allow_blank=True)
avatarColor = serializers.CharField(required=False, allow_blank=True)
avatarIcon = serializers.CharField(required=False, allow_blank=True)
class YieldPredictionChartSerializer(serializers.Serializer):
categories = serializers.ListField(child=serializers.CharField(), required=False)
series = ChartSeriesSerializer(many=True, required=False)
summary = ChartSummaryItemSerializer(many=True, required=False)
class HarvestPredictionCardSerializer(serializers.Serializer):
date = serializers.CharField(required=False, allow_blank=True)
dateFormatted = serializers.CharField(required=False, allow_blank=True)
daysUntil = serializers.IntegerField(required=False)
description = serializers.CharField(required=False, allow_blank=True)
optimalWindowStart = serializers.CharField(required=False, allow_blank=True)
optimalWindowEnd = serializers.CharField(required=False, allow_blank=True)
class YieldHarvestSummarySerializer(serializers.Serializer):
yield_prediction_card = YieldPredictionCardSerializer(required=False)
yield_prediction_chart = YieldPredictionChartSerializer(required=False)
harvest_prediction_card = HarvestPredictionCardSerializer(required=False)