UPDATE
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
"""
|
||||
Management command to seed fixed weather forecasts for the demo farm location.
|
||||
Run: python manage.py seed_weather_data
|
||||
"""
|
||||
from datetime import timedelta
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.utils import timezone
|
||||
|
||||
from location_data.models import SoilLocation
|
||||
from weather.models import WeatherForecast
|
||||
|
||||
|
||||
DEMO_LATITUDE = "50.000000"
|
||||
DEMO_LONGITUDE = "50.000000"
|
||||
DEMO_FORECASTS = [
|
||||
{
|
||||
"day_offset": 0,
|
||||
"temperature_min": 14.0,
|
||||
"temperature_max": 24.5,
|
||||
"temperature_mean": 19.3,
|
||||
"precipitation": 0.0,
|
||||
"precipitation_probability": 5.0,
|
||||
"humidity_mean": 48.0,
|
||||
"wind_speed_max": 12.0,
|
||||
"et0": 4.2,
|
||||
"weather_code": 1,
|
||||
},
|
||||
{
|
||||
"day_offset": 1,
|
||||
"temperature_min": 13.5,
|
||||
"temperature_max": 22.0,
|
||||
"temperature_mean": 17.8,
|
||||
"precipitation": 2.4,
|
||||
"precipitation_probability": 60.0,
|
||||
"humidity_mean": 61.0,
|
||||
"wind_speed_max": 18.0,
|
||||
"et0": 3.7,
|
||||
"weather_code": 61,
|
||||
},
|
||||
{
|
||||
"day_offset": 2,
|
||||
"temperature_min": 12.8,
|
||||
"temperature_max": 20.5,
|
||||
"temperature_mean": 16.4,
|
||||
"precipitation": 4.8,
|
||||
"precipitation_probability": 78.0,
|
||||
"humidity_mean": 68.0,
|
||||
"wind_speed_max": 20.0,
|
||||
"et0": 3.1,
|
||||
"weather_code": 63,
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Seed weather forecast rows for the fixed 50.00, 50.00 demo location."
|
||||
|
||||
def handle(self, *args, **options):
|
||||
location, _ = SoilLocation.objects.get_or_create(
|
||||
latitude=DEMO_LATITUDE,
|
||||
longitude=DEMO_LONGITUDE,
|
||||
)
|
||||
today = timezone.now().date()
|
||||
|
||||
self.stdout.write(
|
||||
self.style.SUCCESS(
|
||||
f"Using SoilLocation id={location.id} at ({location.latitude}, {location.longitude})"
|
||||
)
|
||||
)
|
||||
|
||||
for item in DEMO_FORECASTS:
|
||||
forecast_date = today + timedelta(days=item["day_offset"])
|
||||
defaults = {
|
||||
key: value
|
||||
for key, value in item.items()
|
||||
if key != "day_offset"
|
||||
}
|
||||
_, created = WeatherForecast.objects.update_or_create(
|
||||
location=location,
|
||||
forecast_date=forecast_date,
|
||||
defaults=defaults,
|
||||
)
|
||||
status_text = "Created" if created else "Updated"
|
||||
self.stdout.write(
|
||||
self.style.SUCCESS(f" {status_text} WeatherForecast for {forecast_date}")
|
||||
)
|
||||
|
||||
self.stdout.write(self.style.SUCCESS("\nDone seeding weather_data demo records."))
|
||||
Reference in New Issue
Block a user