84 lines
2.3 KiB
Python
84 lines
2.3 KiB
Python
from os import environ
|
|
from os.path import exists
|
|
|
|
from pydantic import Field, model_validator
|
|
from pydantic_extra_types.semantic_version import SemanticVersion
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
def get_version():
|
|
if exists('.version'):
|
|
with open('.version', encoding='utf-8') as f:
|
|
return SemanticVersion.parse(f.read().strip())
|
|
|
|
return SemanticVersion.parse('0.0.0')
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
model_config = SettingsConfigDict(
|
|
env_file='.env',
|
|
validate_default=False,
|
|
extra='ignore',
|
|
)
|
|
|
|
# App info
|
|
APP_NAME: str = 'Hospital Assistant API'
|
|
APP_DESCRIPTION: str = 'API for the Hospital Assistant'
|
|
APP_PORT: int = Field(default=6767)
|
|
VERSION: SemanticVersion = Field(default_factory=get_version)
|
|
DEBUG: bool = Field(default=False)
|
|
|
|
# Security
|
|
SECRET_KEY: str = Field(default='secret')
|
|
ALGORITHM: str = 'HS256'
|
|
|
|
# Database
|
|
DATABASE_URL: str = Field(default='sqlite:///sql.db')
|
|
|
|
# Redis
|
|
REDIS_URL: str = Field(default='redis://localhost:6379/0')
|
|
|
|
# Loki Logging
|
|
LOKI_URL: str | None = Field(default=None)
|
|
|
|
# ESIA
|
|
ESIA_BASE_URL: str = Field(default='https://esia.gosuslugi.ru')
|
|
ESIA_CLIENT_ID: str = Field(default='')
|
|
ESIA_REDIRECT_URI: str = Field(default='')
|
|
ESIA_CONTAINER_PASSWORD: str = Field(default='')
|
|
ESIA_CONTAINER_THUMBPRINT: str = Field(default='')
|
|
ESIA_PROXY: str | None = Field(default=None)
|
|
|
|
# Vitacore
|
|
VITACORE_BASE_URL: str = Field(
|
|
default='https://gist-cws.ezdrav.ru:8899/MP_API'
|
|
)
|
|
VITACORE_USERNAME: str = Field(default='')
|
|
VITACORE_PASSWORD: str = Field(default='')
|
|
|
|
# AEMD
|
|
AEMD_BASE_URL: str = Field(
|
|
default='http://gist-sdw.ezdrav.ru:8708/EMDAService'
|
|
)
|
|
AEMD_TOKEN: str = Field(default='')
|
|
|
|
# TDN
|
|
TDN_BASE_URL: str = Field(default='https://tdn.tatar.ru/api')
|
|
TDN_LOGIN: str = Field(default='')
|
|
TDN_PASSWORD: str = Field(default='')
|
|
|
|
# TMK
|
|
TMK_BASE_URL: str = Field(default='https://tmk-api.tatar.ru/api')
|
|
TMK_LOGIN: str = Field(default='admin')
|
|
TMK_PASSWORD: str = Field(default='12345')
|
|
|
|
@model_validator(mode='after')
|
|
def celery_env(self):
|
|
environ['CELERY_BROKER_URL'] = self.REDIS_URL
|
|
environ['CELERY_RESULT_BACKEND'] = self.REDIS_URL
|
|
|
|
return self
|
|
|
|
|
|
settings = Settings()
|