Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.81 KB | None | 0 0
  1. from django.db import models
  2. from django.core.exceptions import ObjectDoesNotExist
  3. from django.utils.timezone import now
  4. from darksky.api import DarkSky
  5. from django.utils.dateparse import parse_date
  6. from datetime import datetime
  7. from darksky.types import languages, units, weather
  8. from portfolio.settings import DARKSKY_API_KEY
  9.  
  10.  
  11. class DarkSkyApi(models.Model):
  12.     forecast_summary = models.CharField(max_length=1000)
  13.     forecast_temperature = models.FloatField()
  14.     forecast_humidity = models.FloatField()
  15.     forecast_windspeed = models.FloatField()
  16.     forecast_pressure = models.FloatField()
  17.     forecast_date = models.DateTimeField(default=now())
  18.  
  19.     # init with API key
  20.     darksky = DarkSky(DARKSKY_API_KEY)
  21.  
  22.     # set location
  23.     latitude = 50
  24.     longitude = 20
  25.  
  26.     class Meta:
  27.         verbose_name = "Weather Data"
  28.         verbose_name_plural = "Weather Data"
  29.  
  30.     def get(self):
  31.         try:
  32.             result = self.get_data_from_database()
  33.         except ObjectDoesNotExist as e:
  34.             print(e)
  35.         else:
  36.             result = self.get_weather_data()
  37.         return result
  38.  
  39.     def get_data_from_database(self):
  40.         try:
  41.             qs = DarkSkyApi.objects.get(forecast_date=now())
  42.         except ObjectDoesNotExist as e:
  43.             pass  # todo
  44.         else:
  45.             qs = self.get_weather_data()
  46.         return qs
  47.  
  48.     def put_data_to_datadase(self):
  49.         DarkSkyApi.save(self)
  50.  
  51.     def get_weather_data(self):
  52.         forecast = self.darksky.get_forecast(
  53.             self.latitude, self.longitude,
  54.             extend=False,  # default `False`
  55.             lang=languages.ENGLISH,  # default `ENGLISH`
  56.             units=units.AUTO,  # default `auto`
  57.             exclude=[weather.MINUTELY, weather.ALERTS]  # default `[]`
  58.         )
  59.         return forecast
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement