dressed_for_succes_store/backend/app/config.py
2025-04-01 23:52:37 +07:00

101 lines
3.6 KiB
Python

import os
from pydantic_settings import BaseSettings
from dotenv import load_dotenv
from pathlib import Path
# Загружаем переменные окружения из .env файла
load_dotenv()
# Базовые настройки
API_PREFIX = "/api"
DEBUG = True
# Настройки безопасности
SECRET_KEY = os.getenv("SECRET_KEY", "supersecretkey") # Для JWT
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 60 * 24 * 7 # 7 дней
# Настройки базы данных
# DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./app.db")
# Настройки почты
MAIL_USERNAME = os.getenv("MAIL_USERNAME", "test@example.com")
MAIL_PASSWORD = os.getenv("MAIL_PASSWORD", "test_password")
MAIL_FROM = os.getenv("MAIL_FROM", "noreply@example.com")
MAIL_PORT = int(os.getenv("MAIL_PORT", "587"))
MAIL_SERVER = os.getenv("MAIL_SERVER", "smtp.example.com")
MAIL_TLS = True
MAIL_SSL = False
# Настройки загрузки файлов
# UPLOAD_DIRECTORY = os.getenv("UPLOAD_DIRECTORY", "uploads")
UPLOAD_DIRECTORY = "/"
ALLOWED_UPLOAD_EXTENSIONS = {"jpg", "jpeg", "png", "gif", "webp"}
MAX_UPLOAD_SIZE = 10 * 1024 * 1024 # 10 МБ
# Создаем директорию для загрузок при запуске, если её нет
uploads_dir = Path(UPLOAD_DIRECTORY)
uploads_dir.mkdir(parents=True, exist_ok=True)
products_dir = uploads_dir / "products"
products_dir.mkdir(parents=True, exist_ok=True)
# Настройки корзины
CART_EXPIRATION_DAYS = 30 # Срок хранения корзины
# Настройки API
MAX_PAGE_SIZE = 100 # Максимальный размер страницы для пагинации
# Базовый URL фронтенда
FRONTEND_URL = os.getenv("FRONTEND_URL", "http://localhost:3000")
class Settings(BaseSettings):
# Основные настройки приложения
APP_NAME: str = "Интернет-магазин API"
APP_VERSION: str = "0.1.0"
APP_DESCRIPTION: str = "API для интернет-магазина на FastAPI"
# Настройки базы данных
DATABASE_URL: str = "postgresql://gen_user:F%2BgEEiP3h7yB6d@93.183.81.86:5432/shop_db"
# Настройки безопасности
SECRET_KEY: str = SECRET_KEY
ALGORITHM: str = ALGORITHM
ACCESS_TOKEN_EXPIRE_MINUTES: int = ACCESS_TOKEN_EXPIRE_MINUTES
# Настройки CORS
CORS_ORIGINS: list = [
"http://localhost",
"http://localhost:3000",
"http://localhost:8000",
"http://localhost:8080",
]
# Настройки для загрузки файлов
UPLOAD_DIRECTORY: str = UPLOAD_DIRECTORY
MAX_UPLOAD_SIZE: int = MAX_UPLOAD_SIZE
ALLOWED_UPLOAD_EXTENSIONS: list = list(ALLOWED_UPLOAD_EXTENSIONS)
# Настройки для платежных систем (пример)
PAYMENT_GATEWAY_API_KEY: str = os.getenv("PAYMENT_GATEWAY_API_KEY", "")
PAYMENT_GATEWAY_SECRET: str = os.getenv("PAYMENT_GATEWAY_SECRET", "")
# Настройки для CDEK API
CDEK_LOGIN: str = os.getenv("CDEK_LOGIN", "cdek-login")
CDEK_PASSWORD: str = os.getenv("CDEK_PASSWORD", "cdek-pass")
CDEK_BASE_URL: str = os.getenv("CDEK_BASE_URL", "https://api.cdek.ru/v2")
# Настройки для отправки email (пример)
SMTP_SERVER: str = MAIL_SERVER
SMTP_PORT: int = MAIL_PORT
SMTP_USERNAME: str = MAIL_USERNAME
SMTP_PASSWORD: str = MAIL_PASSWORD
EMAIL_FROM: str = MAIL_FROM
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
# Создаем экземпляр настроек
settings = Settings()