From d0c7e4614abd8f124a2413411d0b10a15153048e Mon Sep 17 00:00:00 2001 From: phil Date: Sun, 8 Dec 2024 02:23:30 +0100 Subject: [PATCH] Fix loose config with environment variables --- src/treetrail/config.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/treetrail/config.py b/src/treetrail/config.py index 2bdfa4e..f095a72 100644 --- a/src/treetrail/config.py +++ b/src/treetrail/config.py @@ -64,14 +64,8 @@ def get_cache_dir() -> Path: return Path(conf.storage.root_cache_path) -class MyBaseSettings(BaseSettings): - model_config = SettingsConfigDict( - env_prefix="treetrail_", - env_nested_delimiter="_", - ) - - -class DB(MyBaseSettings): +class DB(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_db_") # uri: str host: str = "treetrail-database" port: int = 5432 @@ -91,16 +85,19 @@ class DB(MyBaseSettings): return f"postgresql://{self.user}:{self.password}@{self.host}:{self.port}/{self.db}" -class App(MyBaseSettings): +class App(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_app_") title: str = "Tree Trail" -class Storage(MyBaseSettings): +class Storage(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_storage_") root_attachment_path: str = "/var/lib/treetrail/attachments" root_cache_path: str = "/var/lib/treetrail/cache" -class Tiles(MyBaseSettings): +class Tiles(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_tiles_") baseDir: str = "/var/lib/treetrail/mbtiles_files" useRequestUrl: bool = True spriteBaseDir: str = "/var/lib/treetrail/mbtiles_sprites" @@ -109,7 +106,8 @@ class Tiles(MyBaseSettings): osmBaseDir: str = "/var/lib/treetrail/osm" -class Map(MyBaseSettings): +class Map(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_map_") zoom: float = 14.0 pitch: float = 0.0 lat: float = 45.8822 @@ -118,12 +116,14 @@ class Map(MyBaseSettings): background: str = "OpenFreeMap" -class Geo(MyBaseSettings): +class Geo(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_geo_") simplify_geom_factor: int = 10000000 simplify_preserve_topology: bool = False -class Security(MyBaseSettings): +class Security(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_security_") """ JWT security configuration """ @@ -133,12 +133,14 @@ class Security(MyBaseSettings): access_token_expire_minutes: float = 30 -class ExternalMapStyle(MyBaseSettings): +class ExternalMapStyle(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_external_map_style_") name: str url: str -class Config(MyBaseSettings): +class Config(BaseSettings): + model_config = SettingsConfigDict(env_prefix="treetrail_") @classmethod def settings_customise_sources( @@ -161,7 +163,7 @@ class Config(MyBaseSettings): tiles: Tiles = Tiles() security: Security = Security() geo: Geo = Geo() - version: str = '-' + version: str = "-" db: DB = DB() base_href: str = "/treetrail"