- POST /api/admin/upload با احراز هویت JWT: ذخیره فایل در باکت S3 و برگرداندن URL نسبی /media/<سال>/<ماه>/<uuid>.<پسوند> - فرمتهای مجاز: jpg، png، webp، gif، avif — حداکثر ۱۰ مگابایت (قابل تنظیم) - افزودن boto3 و python-multipart به وابستگیها - تنظیمات جدید: S3_ENDPOINT، S3_ACCESS_KEY، S3_SECRET_KEY، S3_BUCKET، MEDIA_PUBLIC_BASE، MEDIA_MAX_UPLOAD_MB (قابل تعریف در .env) - URL نسبی برمیگردد تا بکاند ذخیرهسازی (MinIO/R2/هر S3) بدون تغییر محتوای دیتابیس قابل تعویض باشد - بهروزرسانی .env.example و README (بخش تصاویر و MinIO)
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""تنظیمات برنامه — از متغیرهای محیطی یا فایل .env خوانده میشود."""
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_file_encoding="utf-8",
|
|
extra="ignore",
|
|
)
|
|
|
|
database_url: str = "postgresql+psycopg://postgres:postgres@localhost:5432/arameshplaza_api"
|
|
secret_key: str = "dev-secret-change-me-in-production"
|
|
algorithm: str = "HS256"
|
|
access_token_expire_minutes: int = 1440
|
|
cors_origins: list[str] = ["*"]
|
|
admin_username: str = "admin"
|
|
admin_password: str = "aramesh123"
|
|
|
|
# Object Storage (MinIO / هر S3 سازگار) برای آپلود تصاویر
|
|
s3_endpoint: str = "http://localhost:9000"
|
|
s3_access_key: str = "aramesh"
|
|
s3_secret_key: str = "aramesh-minio-secret"
|
|
s3_bucket: str = "aramesh-media"
|
|
# پیشوند عمومی مسیر تصاویر — nginx آن را به باکت پروکسی میکند
|
|
media_public_base: str = "/media"
|
|
media_max_upload_mb: int = 10
|
|
|
|
|
|
settings = Settings()
|