2026-03-22 01:09:09 +03:30
|
|
|
from datetime import date
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_dashboard_context(sensor_id: str) -> dict | None:
|
|
|
|
|
from irrigation.models import IrrigationMethod
|
|
|
|
|
from location_data.models import SoilDepthData
|
2026-04-06 23:50:24 +03:30
|
|
|
from farm_data.models import SensorData
|
2026-03-22 01:09:09 +03:30
|
|
|
from weather.models import WeatherForecast
|
|
|
|
|
|
|
|
|
|
try:
|
2026-04-06 23:50:24 +03:30
|
|
|
sensor = SensorData.objects.select_related("center_location").prefetch_related("plants").get(
|
|
|
|
|
farm_uuid=sensor_id
|
2026-03-22 01:09:09 +03:30
|
|
|
)
|
|
|
|
|
except SensorData.DoesNotExist:
|
|
|
|
|
return None
|
|
|
|
|
|
2026-04-06 23:50:24 +03:30
|
|
|
location = sensor.center_location
|
2026-03-22 01:09:09 +03:30
|
|
|
depths = list(
|
|
|
|
|
SoilDepthData.objects.filter(soil_location=location).order_by("depth_label")
|
|
|
|
|
)
|
|
|
|
|
forecasts = list(
|
|
|
|
|
WeatherForecast.objects.filter(location=location, forecast_date__gte=date.today())
|
|
|
|
|
.order_by("forecast_date")[:7]
|
|
|
|
|
)
|
|
|
|
|
plants = list(sensor.plants.all())
|
|
|
|
|
irrigation_methods = list(IrrigationMethod.objects.all()[:5])
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
"sensor": sensor,
|
|
|
|
|
"location": location,
|
|
|
|
|
"depths": depths,
|
|
|
|
|
"forecasts": forecasts,
|
2026-04-06 23:50:24 +03:30
|
|
|
"history": [],
|
2026-03-22 01:09:09 +03:30
|
|
|
"plants": plants,
|
|
|
|
|
"irrigation_methods": irrigation_methods,
|
|
|
|
|
}
|