from __future__ import annotations from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): app_env: str = "production" app_secret_key: str = "change-me" admin_app_title: str = "Редакторская" admin_bootstrap_login: str = "admin" admin_bootstrap_password: str = "" db_host: str = "localhost" db_port: int = 5432 db_name: str = "vk_parser" db_user: str = "vk_parser_user" db_password: str = "" vk_access_token: str = "" vk_group_access_token: str = "" vk_api_version: str = "5.199" vk_storage_group_id: int = 0 tg_bot_token: str = "" tg_media_channel_id: str = "" local_bot_api_url: str = "" admin_host: str = "0.0.0.0" admin_port: int = 8080 log_level: str = "INFO" model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") @property def db_dsn(self) -> str: return ( f"postgresql://{self.db_user}:{self.db_password}" f"@{self.db_host}:{self.db_port}/{self.db_name}" ) @property def display_admin_title(self) -> str: return self.admin_app_title.strip() or "Редакторская" @property def vk_storage_owner_id(self) -> int: return -abs(int(self.vk_storage_group_id)) settings = Settings()