first commit
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
# Seed migration: populate sample 7-day weather forecasts for existing SoilLocations.
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
from django.db import migrations
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
SAMPLE_DAILY_DATA = [
|
||||
{
|
||||
"day_offset": 0,
|
||||
"temperature_min": 18.5,
|
||||
"temperature_max": 33.2,
|
||||
"temperature_mean": 25.8,
|
||||
"precipitation": 0.0,
|
||||
"precipitation_probability": 5.0,
|
||||
"humidity_mean": 28.0,
|
||||
"wind_speed_max": 12.0,
|
||||
"et0": 6.8,
|
||||
"weather_code": 0,
|
||||
},
|
||||
{
|
||||
"day_offset": 1,
|
||||
"temperature_min": 19.0,
|
||||
"temperature_max": 34.5,
|
||||
"temperature_mean": 26.7,
|
||||
"precipitation": 0.0,
|
||||
"precipitation_probability": 10.0,
|
||||
"humidity_mean": 30.0,
|
||||
"wind_speed_max": 14.0,
|
||||
"et0": 7.1,
|
||||
"weather_code": 1,
|
||||
},
|
||||
{
|
||||
"day_offset": 2,
|
||||
"temperature_min": 20.2,
|
||||
"temperature_max": 32.0,
|
||||
"temperature_mean": 26.1,
|
||||
"precipitation": 3.5,
|
||||
"precipitation_probability": 65.0,
|
||||
"humidity_mean": 52.0,
|
||||
"wind_speed_max": 18.0,
|
||||
"et0": 5.2,
|
||||
"weather_code": 61,
|
||||
},
|
||||
{
|
||||
"day_offset": 3,
|
||||
"temperature_min": 17.8,
|
||||
"temperature_max": 28.5,
|
||||
"temperature_mean": 23.1,
|
||||
"precipitation": 12.0,
|
||||
"precipitation_probability": 85.0,
|
||||
"humidity_mean": 70.0,
|
||||
"wind_speed_max": 22.0,
|
||||
"et0": 3.8,
|
||||
"weather_code": 63,
|
||||
},
|
||||
{
|
||||
"day_offset": 4,
|
||||
"temperature_min": 16.5,
|
||||
"temperature_max": 27.0,
|
||||
"temperature_mean": 21.7,
|
||||
"precipitation": 5.0,
|
||||
"precipitation_probability": 55.0,
|
||||
"humidity_mean": 60.0,
|
||||
"wind_speed_max": 16.0,
|
||||
"et0": 4.5,
|
||||
"weather_code": 61,
|
||||
},
|
||||
{
|
||||
"day_offset": 5,
|
||||
"temperature_min": 18.0,
|
||||
"temperature_max": 31.0,
|
||||
"temperature_mean": 24.5,
|
||||
"precipitation": 0.0,
|
||||
"precipitation_probability": 8.0,
|
||||
"humidity_mean": 35.0,
|
||||
"wind_speed_max": 10.0,
|
||||
"et0": 6.2,
|
||||
"weather_code": 2,
|
||||
},
|
||||
{
|
||||
"day_offset": 6,
|
||||
"temperature_min": 19.5,
|
||||
"temperature_max": 34.0,
|
||||
"temperature_mean": 26.7,
|
||||
"precipitation": 0.0,
|
||||
"precipitation_probability": 3.0,
|
||||
"humidity_mean": 25.0,
|
||||
"wind_speed_max": 8.0,
|
||||
"et0": 7.0,
|
||||
"weather_code": 0,
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def seed_forecasts(apps, schema_editor):
|
||||
SoilLocation = apps.get_model("location_data", "SoilLocation")
|
||||
WeatherForecast = apps.get_model("weather", "WeatherForecast")
|
||||
|
||||
today = timezone.now().date()
|
||||
|
||||
for location in SoilLocation.objects.all():
|
||||
for daily in SAMPLE_DAILY_DATA:
|
||||
forecast_date = today + timedelta(days=daily["day_offset"])
|
||||
WeatherForecast.objects.get_or_create(
|
||||
location=location,
|
||||
forecast_date=forecast_date,
|
||||
defaults={
|
||||
"temperature_min": daily["temperature_min"],
|
||||
"temperature_max": daily["temperature_max"],
|
||||
"temperature_mean": daily["temperature_mean"],
|
||||
"precipitation": daily["precipitation"],
|
||||
"precipitation_probability": daily["precipitation_probability"],
|
||||
"humidity_mean": daily["humidity_mean"],
|
||||
"wind_speed_max": daily["wind_speed_max"],
|
||||
"et0": daily["et0"],
|
||||
"weather_code": daily["weather_code"],
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
def unseed_forecasts(apps, schema_editor):
|
||||
WeatherForecast = apps.get_model("weather", "WeatherForecast")
|
||||
WeatherForecast.objects.all().delete()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("weather", "0002_seed_weather_parameters"),
|
||||
("location_data", "0002_soildepthdata_refactor"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(seed_forecasts, unseed_forecasts),
|
||||
]
|
||||
Reference in New Issue
Block a user