101 lines
3.6 KiB
Python
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() |