""" Конфигурация приложения Загрузка настроек из переменных окружения """ import os from pathlib import Path from dotenv import load_dotenv from pydantic_settings import BaseSettings from pydantic import Field # Загрузка .env файла load_dotenv() # Базовая директория проекта BASE_DIR = Path(__file__).parent class Settings(BaseSettings): """Настройки приложения""" # МойСклад API moysklad_login: str = Field(default='', env='MOYSKLAD_LOGIN') moysklad_password: str = Field(default='', env='MOYSKLAD_PASSWORD') moysklad_api_url: str = Field( default='https://api.moysklad.ru/api/remap/1.2', env='MOYSKLAD_API_URL' ) # Telegram Bot telegram_bot_token: str = Field(default='', env='TELEGRAM_BOT_TOKEN') # Настройки приложения log_level: str = Field(default='INFO', env='LOG_LEVEL') debug: bool = Field(default=False, env='DEBUG') include_accounting_accounts: bool = Field( default=True, env='INCLUDE_ACCOUNTING_ACCOUNTS' ) # Пути output_dir: Path = Field(default=BASE_DIR / 'output', env='OUTPUT_DIR') templates_dir: Path = Field( default=BASE_DIR / 'templates', env='TEMPLATES_DIR' ) # Форматы документов xml_version: str = '5.03' encoding: str = 'UTF-8' class Config: env_file = '.env' env_file_encoding = 'utf-8' case_sensitive = False # Создание экземпляра настроек try: settings = Settings(debug=False) # Создание необходимых директорий settings.output_dir.mkdir(parents=True, exist_ok=True) if settings.templates_dir != BASE_DIR / 'templates': settings.templates_dir.mkdir(parents=True, exist_ok=True) except Exception as e: # Для GUI приложения создаем настройки по умолчанию import logging logger = logging.getLogger(__name__) logger.warning(f"⚠️ Настройки из .env не загружены: {e}") logger.info("Используются настройки по умолчанию") settings = Settings(debug=False) settings.output_dir.mkdir(parents=True, exist_ok=True)