コード例 #1
0
    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
コード例 #2
0
ファイル: weather.py プロジェクト: LeonB/motorrijweer
    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
コード例 #3
0
ファイル: motorrijweer.py プロジェクト: LeonB/motorrijweer
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'
コード例 #4
0
 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']
コード例 #5
0
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'
コード例 #6
0
    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
コード例 #7
0
ファイル: weather.py プロジェクト: LeonB/motorrijweer
    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
コード例 #8
0
ファイル: decorators.py プロジェクト: LeonB/motorrijweer
		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
コード例 #9
0
        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
コード例 #10
0
ファイル: wunderground.py プロジェクト: LeonB/motorrijweer
    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
コード例 #11
0
ファイル: wunderground.py プロジェクト: LeonB/motorrijweer
    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
コード例 #12
0
ファイル: weather.py プロジェクト: LeonB/motorrijweer
 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']
コード例 #13
0
ファイル: helpers.py プロジェクト: LeonB/motorrijweer
def link_forward(datum):
    datum = datum + mytime.timedelta(days=1)
    datum_str = jinja_filters.datestr(datum)
    return (datum_str if datum_str else datum)
コード例 #14
0
def link_forward(datum):
    datum = datum + mytime.timedelta(days=1)
    datum_str = jinja_filters.datestr(datum)
    return (datum_str if datum_str else datum)
コード例 #15
0
def link_back(datum):
    datum = datum - mytime.timedelta(days=1)
    datum_str = jinja_filters.datestr(datum)
    return (datum_str if datum_str else datum)
コード例 #16
0
ファイル: jinja_filters.py プロジェクト: LeonB/motorrijweer
def timedelta(date, *args, **kwargs):
    return date + mytime.timedelta(*args, **kwargs)
コード例 #17
0
ファイル: helpers.py プロジェクト: LeonB/motorrijweer
def link_back(datum):
    datum = datum - mytime.timedelta(days=1)
    datum_str = jinja_filters.datestr(datum)
    return (datum_str if datum_str else datum)
コード例 #18
0
ファイル: jinja_filters.py プロジェクト: LeonB/motorrijweer
def timedelta(date, *args, **kwargs):
    return date + mytime.timedelta(*args, **kwargs)