weather-be/weather/serializers.py

40 lines
1.6 KiB
Python

from rest_framework import serializers
from django.db import models
from .models import WeatherStats
class WeatherStatSerializer(serializers.ModelSerializer):
created_at = serializers.DateTimeField(read_only=True)
class Meta:
model = WeatherStats
fields = ('humidity_air', 'humidity_ground', 'temperature', 'light', 'created_at')
class OpenWeatherAPISerializer(serializers.Serializer):
date = serializers.DateField()
temp_night = serializers.FloatField()
temp_day = serializers.FloatField()
humidity = serializers.FloatField()
wind_speed = serializers.FloatField()
precip_probability = serializers.FloatField()
class WeatherPeriods(models.TextChoices):
min_10 = 'min_10', '10 Minutes'
min_30 = 'min_30', '30 Minutes'
hour = 'hour', '1 Hour'
hour_6 = 'hour_6', '6 Hours'
hour_12 = 'hour_12', '12 Hours'
hour_24 = 'hour_24', '24 Hours'
@classmethod
def only_values(cls):
return [value for value, label in cls.choices]
class WeatherByPeriodRequestSerializer(serializers.Serializer):
period = serializers.ChoiceField(WeatherPeriods.choices, required=True)
class WeatherByPeriodSerializer(serializers.Serializer):
date = serializers.DateTimeField(required=True)
humidity_air = serializers.FloatField(required=True)
humidity_ground = serializers.FloatField(required=True)
temperature = serializers.FloatField(required=True)
light = serializers.FloatField(required=True)