diff options
| author | Max Nanis | 2026-02-21 02:15:52 -0500 |
|---|---|---|
| committer | Max Nanis | 2026-02-21 02:15:52 -0500 |
| commit | 67ab724561e4ceb8fe8fb4031de277168f7d9724 (patch) | |
| tree | 4d85619973491e7239f0e83dc5cdd85618f0f248 /jb/settings.py | |
| parent | af8057d58ff152f511f5161a7626b0fffa9d661a (diff) | |
| download | amt-jb-67ab724561e4ceb8fe8fb4031de277168f7d9724.tar.gz amt-jb-67ab724561e4ceb8fe8fb4031de277168f7d9724.zip | |
More pytest conf, some views, and defining more attrs on the settings config
Diffstat (limited to 'jb/settings.py')
| -rw-r--r-- | jb/settings.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/jb/settings.py b/jb/settings.py new file mode 100644 index 0000000..28402f3 --- /dev/null +++ b/jb/settings.py @@ -0,0 +1,75 @@ +import os +from functools import lru_cache +from pathlib import Path +from typing import Optional + +from generalresearchutils.models.custom_types import InfluxDsn +from pydantic import Field, PostgresDsn, HttpUrl, RedisDsn +from pydantic_settings import BaseSettings, SettingsConfigDict + +from jb.models.custom_types import UUIDStr + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +BASE_HTML_PATH = Path(BASE_DIR) / "templates" / "base.html" +BASE_HTML = BASE_HTML_PATH.read_text() + + +class AmtJbBaseSettings(BaseSettings): + debug: bool = Field(default=True) + + redis: Optional[RedisDsn] = Field(default=None) + redis_timeout: float = Field(default=0.10) + + amt_jb_db: PostgresDsn = Field() + + amt_endpoint: Optional[HttpUrl] = Field(default=None) + amt_access_id: Optional[str] = Field(default=None) + amt_secret_key: Optional[str] = Field(default=None) + + aws_owner_id: str = Field() + aws_subscription_arn: str = Field() + + +class Settings(AmtJbBaseSettings): + model_config = SettingsConfigDict( + env_prefix="", + case_sensitive=False, + env_file=os.path.join(BASE_DIR, ".env"), + extra="allow", + cli_parse_args=False, + ) + debug: bool = False + app_name: str = "AMT JB API" + + fsb_host: HttpUrl = Field(default="https://fsb.generalresearch.com/") + # Needed for admin function on fsb w/o authentication + fsb_host_private_route: Optional[str] = Field(default=None) + + product_id: UUIDStr = Field() + + influx_db: Optional[InfluxDsn] = Field(default=None) + + sns_path: str = Field() + + +class TestSettings(Settings): + model_config = SettingsConfigDict( + env_prefix="", + case_sensitive=False, + env_file=os.path.join(BASE_DIR, ".env.dev"), + extra="allow", + cli_parse_args=False, + ) + debug: bool = True + app_name: str = "AMT JB API Development" + + +@lru_cache +def get_settings(): + return Settings() + + +@lru_cache +def get_test_settings(): + return TestSettings() |
