40 lines
1.6 KiB
Python
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) |