58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
from pathlib import Path
|
|
import os
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
PROJECT_ROOT = BASE_DIR.parent
|
|
ENV_FILE = BASE_DIR / ".env"
|
|
ROOT_ENV_FILE = PROJECT_ROOT / ".env"
|
|
|
|
load_dotenv(ROOT_ENV_FILE)
|
|
load_dotenv(ENV_FILE, override=True)
|
|
|
|
|
|
class Settings:
|
|
def __init__(self) -> None:
|
|
self.app_name = os.getenv("APP_NAME", "Clinica Veterinaria Formiginese API")
|
|
self.app_env = os.getenv("APP_ENV", "development")
|
|
self.app_host = os.getenv("APP_HOST", "127.0.0.1")
|
|
self.app_port = int(os.getenv("APP_PORT", "8000"))
|
|
default_sqlite_path = (PROJECT_ROOT / "data" / "clinica.db").resolve()
|
|
self.database_url = os.getenv("DATABASE_URL", f"sqlite:///{default_sqlite_path.as_posix()}")
|
|
self.smtp_host = os.getenv("SMTP_HOST", "smtp.gmail.com")
|
|
self.smtp_port = int(os.getenv("SMTP_PORT", "587"))
|
|
self.smtp_username = os.getenv("SMTP_USERNAME", "")
|
|
self.smtp_password = os.getenv("SMTP_PASSWORD", "")
|
|
self.smtp_use_tls = os.getenv("SMTP_USE_TLS", "true").lower() in {"1", "true", "yes", "on"}
|
|
self.booking_email_from = os.getenv("BOOKING_EMAIL_FROM", self.smtp_username)
|
|
self.booking_email_to = os.getenv("BOOKING_EMAIL_TO", "")
|
|
self.booking_email_subject_prefix = os.getenv(
|
|
"BOOKING_EMAIL_SUBJECT_PREFIX",
|
|
"[Clinica Veterinaria Formiginese]",
|
|
)
|
|
|
|
@property
|
|
def sqlite_file_path(self) -> str | None:
|
|
sqlite_prefix = "sqlite:///"
|
|
if self.database_url.startswith(sqlite_prefix):
|
|
return self.database_url.removeprefix(sqlite_prefix)
|
|
return None
|
|
|
|
@property
|
|
def booking_mail_enabled(self) -> bool:
|
|
return all(
|
|
[
|
|
self.smtp_host,
|
|
self.smtp_port,
|
|
self.smtp_username,
|
|
self.smtp_password,
|
|
self.booking_email_from,
|
|
self.booking_email_to,
|
|
]
|
|
)
|
|
|
|
|
|
settings = Settings()
|