from functools import cached_property from django.apps import AppConfig from django.conf import settings class SoilDataConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" name = "location_data" verbose_name = "Soil Data (SoilGrids)" @cached_property def ndvi_health_service(self): from .ndvi import NdviHealthService return NdviHealthService() @cached_property def soil_data_adapter(self): from .soil_adapters import MockSoilDataAdapter, SoilGridsAdapter provider = getattr(settings, "SOIL_DATA_PROVIDER", "mock") if provider == "soilgrids": return SoilGridsAdapter( timeout=getattr(settings, "SOILGRIDS_TIMEOUT_SECONDS", 60) ) if provider == "mock": return MockSoilDataAdapter( delay_seconds=getattr(settings, "SOIL_MOCK_DELAY_SECONDS", 0.8) ) raise ValueError(f"Unsupported soil data provider: {provider}") def get_ndvi_health_service(self): return self.ndvi_health_service def get_soil_data_adapter(self): return self.soil_data_adapter