from pydantic import model_validator
from pydantic_settings import BaseSettings
import logging
import pytz
[docs]
class Settings(BaseSettings):
# default values if env variables does not exist
# Ace API access to Centralize API service
CENTRALIZE_API_URL: str
CENTRALIZE_API_KEY: str
CENTRALIZE_BASE_URL: str = "https://dev.centralize.equisoft.io"
# Monitoring settings
TIMEZONE: str
# DATABASE SETTING
CONNECT_DATABASE: bool = False
USE_DB_CONTEXT: bool = False
DBMS_TYPE: str = ""
DATABASE_NAME: str
DATABASE_HOST: str = ""
DATABASE_PORT: int = 0
DATABASE_USER: str
DATABASE_PASSWORD: str
DATABASE_DRIVER: str
DATABASE_AUTH_METHOD: str = "SQL_SERVER_AUTH"
DATABASE_REQUEST_TIMEOUT: int = 30
ACE_SERVICE_USER_ID: int = 0
DATABASE_UPDATE_METHOD: str = "DIRECT"
ACE_SCRIPT_REPO: str
# SFTP settings
SFTP_AUTH_METHOD: str = "password" # password or private_key
SFTP_HOST: str = ""
SFTP_PORT: int = 22
SFTP_USERNAME: str = ""
SFTP_PASSWORD: str = ""
SFTP_PRIVATE_KEY: str = ""
SFTP_PRIVATE_KEY_FILE: str = ""
# SMTP settings
SMTP_HOST: str = ""
SMTP_PORT: int = 587
SMTP_USERNAME: str = ""
SMTP_PASSWORD: str = ""
EMAIL_TEMPLATE_PATH: str = "templates/emails/"
# specify .env file location as Config attribute
[docs]
class Config:
env_file = ".env"
extra = "ignore"
@model_validator(mode="before")
def warn_on_string_boolean(cls, values):
for key, value in values.items():
if isinstance(value, str) and value in {"true", "false"}:
# log deprecation warning for string boolean values and convert to boolean. will be removed in future
logging.warning(
f"String boolean values are deprecated for {key}. Use boolean values instead. "
f"Converting '{value}' to {value == 'true'}"
)
values[key] = value == "true"
logging.warning(f"Converted {key} to {values[key]}")
return values
settings = Settings()