12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- from datetime import datetime, timedelta
- from almanac.models import WeatherConditions, Day
- from directory.models import Town
- ''' Condition archiver.
- This script is designed to be run once a day, preferably as early as possible.
- It does the following things:
- * Grabs all conditions for previous day.
- * Generates avg, high, and low temps for past day
- * Generates avg. pressure and humidity
- * Grabs the first Conditions weather condition
- * Stores all results in the corresponding "Day" object
- The purpose of this script is to develop and "archive" of weather, so we
- can provide our own weather history for each day.'''
- yesterday = Day.objects.get(date__exact=(datetime.now()+timedelta(days=-1)).date())
- daily={'avg':0, 'high':-60, 'low':120 }
- monthly_avg=0
- yearly_avg=0
- daily_conditions = WeatherConditions.objects.filter(town__slug='stonington', observation_time__year=yesterday.date.year).filter(observation_time__month=yesterday.date.month).filter(observation_time__day=yesterday.date.day)
- monthly_conditions = WeatherConditions.objects.filter(town__slug='stonington', observation_time__year=yesterday.date.year).filter(observation_time__month=yesterday.date.month)
- yearly_conditions = WeatherConditions.objects.filter(town__slug='stonington', observation_time__year=yesterday.date.year)
- if daily_conditions:
- for c in daily_conditions:
- daily['avg'] += c.temperature
- if c.temperature > daily['high']:
- daily['high'] = c.temperature
- if c.temperature < daily['low']:
- daily['low'] = c.temperature
-
- for c in monthly_conditions:
- monthly_avg += c.temperature
-
- for c in yearly_conditions:
- yearly_avg += c.temperature
- if monthly_avg != 0:
- monthly_avg = monthly_avg / len(monthly_conditions)
- if yearly_avg != 0:
- yearly_avg = yearly_avg / len(yearly_conditions)
- if daily_conditions:
- daily['avg'] = daily['avg'] / len(daily_conditions)
- yesterday.daily_avg_temp=str(daily['avg'])
- yesterday.daily_high_temp=str(daily['high'])
- yesterday.daily_low_temp=str(daily['low'])
- yesterday.monthly_avg_temp=str(monthly_avg)
- yesterday.yearly_avg_temp=str(yearly_avg)
- yesterday.save()
-
|