aboutsummaryrefslogtreecommitdiff
path: root/jb/settings.py
diff options
context:
space:
mode:
authorMax Nanis2026-02-21 02:15:52 -0500
committerMax Nanis2026-02-21 02:15:52 -0500
commit67ab724561e4ceb8fe8fb4031de277168f7d9724 (patch)
tree4d85619973491e7239f0e83dc5cdd85618f0f248 /jb/settings.py
parentaf8057d58ff152f511f5161a7626b0fffa9d661a (diff)
downloadamt-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.py75
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()