def from_gae(cls, station=None, regio=None, provincie=None, datum=None): stations = [] if station: stations = [station.id] elif regio: stations = map(lambda x: x.id, regio.stations) elif provincie: stations = stations + map(lambda x: x.id, provincie.stations) collection = ForecastCollection() if len(stations) == 0: return collection dbForecasts = models.Forecast.gql( "WHERE station_id IN :stations AND datapunt_van >= :datum \ AND datapunt_van < :plus_dag \ ORDER BY datapunt_van ASC", stations=stations, datum=datum, plus_dag=datum + mytime.timedelta(days=1), min_dag=datum - mytime.timedelta(days=1)) #dbForecasts = sorted(dbForecasts, key=lambda x: x.tijdstip_datapunt, reverse=True) for dbForecast in dbForecasts: forecast = Forecast.from_gae(dbForecast) #if len(collection.forecasts) > 0: #previous_forecast = collection.forecasts[-1] #if previous_forecast.datapunt_van > forecast.datapunt_van: #break collection.forecasts.append(forecast) return collection
def from_gae(cls, station = None, regio = None, provincie = None, datum = None): stations = [] if station: stations = [station.id] elif regio: stations = map(lambda x: x.id, regio.stations) elif provincie: stations = stations + map(lambda x: x.id, provincie.stations) collection = ForecastCollection() if len(stations) == 0: return collection dbForecasts = models.Forecast.gql("WHERE station_id IN :stations AND datapunt_van >= :datum \ AND datapunt_van < :plus_dag \ ORDER BY datapunt_van ASC", stations=stations, datum=datum, plus_dag=datum + mytime.timedelta(days=1), min_dag=datum - mytime.timedelta(days=1)) #dbForecasts = sorted(dbForecasts, key=lambda x: x.tijdstip_datapunt, reverse=True) for dbForecast in dbForecasts: forecast = Forecast.from_gae(dbForecast) #if len(collection.forecasts) > 0: #previous_forecast = collection.forecasts[-1] #if previous_forecast.datapunt_van > forecast.datapunt_van: #break collection.forecasts.append(forecast) return collection
def tasks_delete_old_forecasts(): dagen = 21 datum = (mytime.datetime.today() + mytime.timedelta(days=-21)).date() for forecast in models.Forecast.gql('WHERE datapunt_van < :datum', datum=datum): forecast.delete() return 'OK'
def bind(self, gegevens): self.datapunt_van = mytime.datetime.fromtimestamp( float(gegevens['FCTTIME']['epoch'])) self.datapunt_tot = self.datapunt_van + mytime.timedelta(seconds=60 * 60) self.tijdstip_datapunt = mytime.datetime.now() self.weertype = gegevens['icon'] self.omschrijving = gegevens['condition'] self.temperatuur = float(gegevens['temp']['metric']) self.gevoelstemperatuur = float(gegevens['feelslike']['metric']) self.neerslagkans = float(gegevens['pop']) / 100 try: self.winterse_neerslag_in_mm = float(gegevens['snow']['metric']) except ValueError: self.winterse_neerslag_in_mm = 0.0 try: self.neerslag_in_mm = float(gegevens['qpf']['metric']) except ValueError: self.neerslag_in_mm = 0.0 try: self.bewolking = float(gegevens['sky']) / 100 except ValueError: self.bewolking = 0.0 self.zonkans = 1 - self.bewolking self.windkracht = float(gegevens['wspd']['metric']) self.windrichting = gegevens['wdir']['dir']
def tomorrow(self): tomorrow = (mytime.datetime.today() + mytime.timedelta(days=1)).date() gegevens_tomorrow = ForecastCollection() for forecast in self.forecasts: dt = forecast.datapunt_van if dt.date() == tomorrow: gegevens_tomorrow.forecasts.append(forecast) return gegevens_tomorrow
def decorated_function(*args, **kwargs): tme = (mytime.datetime.today()+mytime.timedelta(minutes=minutes)).strftime('%a, %d %b %Y %H:%M:%S') + ' ' + mytime.datetime.today().tzname() data = f(*args, **kwargs) if isinstance(data, flask.wrappers.Response): response = data else: response = flask.make_response(data) response.headers['Expires'] = tme response.headers['Cache-Control'] = 'max-age=%s' % minutes return response
def decorated_function(*args, **kwargs): tme = (mytime.datetime.today() + mytime.timedelta(minutes=minutes) ).strftime('%a, %d %b %Y %H:%M:%S' ) + ' ' + mytime.datetime.today().tzname() data = f(*args, **kwargs) if isinstance(data, flask.wrappers.Response): response = data else: response = flask.make_response(data) response.headers['Expires'] = tme response.headers['Cache-Control'] = 'max-age=%s' % minutes return response
def hourly(cls): retvals = [] for station in weather.Station.all(): now = mytime.datetime.now() # Make sure it is never request more than once every 30 minutes timediff = now - mytime.timedelta(seconds=60*30) last_forecast = models.Forecast.gql("WHERE station_id = :station_id AND \ tijdstip_datapunt > :timediff", station_id=station.id, timediff=timediff).get() # There's already a forecast < 15 minutes: skip if last_forecast: continue # return it retvals.append(station) return retvals
def hourly(cls): retvals = [] for station in weather.Station.all(): now = mytime.datetime.now() # Make sure it is never request more than once every 30 minutes timediff = now - mytime.timedelta(seconds=60 * 30) last_forecast = models.Forecast.gql( "WHERE station_id = :station_id AND \ tijdstip_datapunt > :timediff", station_id=station.id, timediff=timediff).get() # There's already a forecast < 15 minutes: skip if last_forecast: continue # return it retvals.append(station) return retvals
def bind(self, gegevens): self.datapunt_van = mytime.datetime.fromtimestamp(float(gegevens['FCTTIME']['epoch'])) self.datapunt_tot = self.datapunt_van + mytime.timedelta(seconds=60*60) self.tijdstip_datapunt = mytime.datetime.now() self.weertype = gegevens['icon'] self.omschrijving = gegevens['condition'] self.temperatuur = float(gegevens['temp']['metric']) self.gevoelstemperatuur = float(gegevens['feelslike']['metric']) self.neerslagkans = float(gegevens['pop'])/100 try: self.winterse_neerslag_in_mm = float(gegevens['snow']['metric']) except ValueError: self.winterse_neerslag_in_mm = 0.0 try: self.neerslag_in_mm = float(gegevens['qpf']['metric']) except ValueError: self.neerslag_in_mm = 0.0 try: self.bewolking = float(gegevens['sky'])/100 except ValueError: self.bewolking = 0.0 self.zonkans = 1 - self.bewolking self.windkracht = float(gegevens['wspd']['metric']) self.windrichting = gegevens['wdir']['dir']
def link_forward(datum): datum = datum + mytime.timedelta(days=1) datum_str = jinja_filters.datestr(datum) return (datum_str if datum_str else datum)
def link_back(datum): datum = datum - mytime.timedelta(days=1) datum_str = jinja_filters.datestr(datum) return (datum_str if datum_str else datum)
def timedelta(date, *args, **kwargs): return date + mytime.timedelta(*args, **kwargs)