40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
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", "soilgrids")
|
|
if provider == "soilgrids":
|
|
return SoilGridsAdapter(
|
|
timeout=getattr(settings, "SOILGRIDS_TIMEOUT_SECONDS", 60)
|
|
)
|
|
if provider == "mock":
|
|
if not (getattr(settings, "DEBUG", False) or getattr(settings, "DEVELOP", False)):
|
|
raise RuntimeError("Mock soil provider is disabled outside dev/test environments.")
|
|
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
|