from rest_framework import serializers 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} 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)