from datetime import date def load_farm_context(sensor_id: str) -> dict | None: from irrigation.models import IrrigationMethod from location_data.models import SoilDepthData from farm_data.models import SensorData from weather.models import WeatherForecast try: sensor = SensorData.objects.select_related("center_location").prefetch_related("plants").get( farm_uuid=sensor_id ) except SensorData.DoesNotExist: return None location = sensor.center_location 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, "history": [], "plants": plants, "irrigation_methods": irrigation_methods, }