75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
"""
|
|
Конфигурация приложения
|
|
Загрузка настроек из переменных окружения
|
|
"""
|
|
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)
|