Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.core.exceptions import ObjectDoesNotExist
- from django.utils.timezone import now
- from darksky.api import DarkSky
- from django.utils.dateparse import parse_date
- from datetime import datetime
- from darksky.types import languages, units, weather
- from portfolio.settings import DARKSKY_API_KEY
- class DarkSkyApi(models.Model):
- forecast_summary = models.CharField(max_length=1000)
- forecast_temperature = models.FloatField()
- forecast_humidity = models.FloatField()
- forecast_windspeed = models.FloatField()
- forecast_pressure = models.FloatField()
- forecast_date = models.DateTimeField(default=now())
- # init with API key
- darksky = DarkSky(DARKSKY_API_KEY)
- # set location
- latitude = 50
- longitude = 20
- class Meta:
- verbose_name = "Weather Data"
- verbose_name_plural = "Weather Data"
- def get(self):
- try:
- result = self.get_data_from_database()
- except ObjectDoesNotExist as e:
- print(e)
- else:
- result = self.get_weather_data()
- return result
- def get_data_from_database(self):
- try:
- qs = DarkSkyApi.objects.get(forecast_date=now())
- except ObjectDoesNotExist as e:
- pass # todo
- else:
- qs = self.get_weather_data()
- return qs
- def put_data_to_datadase(self):
- DarkSkyApi.save(self)
- def get_weather_data(self):
- forecast = self.darksky.get_forecast(
- self.latitude, self.longitude,
- extend=False, # default `False`
- lang=languages.ENGLISH, # default `ENGLISH`
- units=units.AUTO, # default `auto`
- exclude=[weather.MINUTELY, weather.ALERTS] # default `[]`
- )
- return forecast
Advertisement
Add Comment
Please, Sign In to add comment