From 3bef4f0ba05ebe08da9695d231dd5f2378d0fea8 Mon Sep 17 00:00:00 2001 From: DIKER0K Date: Thu, 4 Dec 2025 01:21:07 +0500 Subject: [PATCH] fix skins and capes saves --- app/core/config.py | 6 ++++++ app/services/cape.py | 6 +++--- app/services/skin.py | 6 +++--- docker-compose.yml | 2 +- main.py | 8 +++++--- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index 560f930..d1cfbf3 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -9,3 +9,9 @@ MONGO_URI = os.getenv("MONGO_URI") SECRET_KEY = os.getenv("SECRET_KEY") ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES = 1440 # 24 часа + +BASE_DIR = Path(__file__).resolve().parent.parent # /app/app +STATIC_DIR = BASE_DIR / "static" +SKINS_DIR = STATIC_DIR / "skins" +CAPES_DIR = STATIC_DIR / "capes" +CAPES_STORE_DIR = STATIC_DIR / "capes_store" \ No newline at end of file diff --git a/app/services/cape.py b/app/services/cape.py index e28c140..4c81c9b 100644 --- a/app/services/cape.py +++ b/app/services/cape.py @@ -1,5 +1,5 @@ from app.db.database import users_collection -from app.core.config import FILES_URL +from app.core.config import CAPES_DIR, FILES_URL from fastapi import HTTPException, UploadFile from datetime import datetime @@ -30,7 +30,7 @@ class CapeService: import os old_url = user["cloak_url"] old_filename = os.path.basename(urlparse(old_url).path) - old_path = os.path.join("/app/static/capes", old_filename) + old_path = CAPES_DIR / old_filename if os.path.exists(old_path): try: os.remove(old_path) @@ -39,7 +39,7 @@ class CapeService: # Создаем папку для плащей, если ее нет from pathlib import Path - cape_dir = Path("/app/static/capes") + cape_dir = CAPES_DIR cape_dir.mkdir(parents=True, exist_ok=True) cape_filename = f"{username}_{int(datetime.now().timestamp())}.{ext}" diff --git a/app/services/skin.py b/app/services/skin.py index 5f209a9..e6d9831 100644 --- a/app/services/skin.py +++ b/app/services/skin.py @@ -1,7 +1,7 @@ from fastapi import HTTPException, UploadFile from datetime import datetime from app.db.database import users_collection -from app.core.config import FILES_URL +from app.core.config import FILES_URL, SKINS_DIR class SkinService: async def set_skin(self, username: str, skin_file: UploadFile, skin_model: str = "classic"): @@ -24,7 +24,7 @@ class SkinService: old_url = user["skin_url"] # Получаем имя файла из url old_filename = os.path.basename(urlparse(old_url).path) - old_path = os.path.join("app/static/skins", old_filename) + old_path = SKINS_DIR / old_filename print(f"Trying to delete old skin at: {old_path}") if os.path.exists(old_path): try: @@ -34,7 +34,7 @@ class SkinService: # Создаем папку для скинов, если ее нет from pathlib import Path - skin_dir = Path("/app/static/skins") + skin_dir = SKINS_DIR skin_dir.mkdir(parents=True, exist_ok=True) # Генерируем имя файла diff --git a/docker-compose.yml b/docker-compose.yml index 639bb08..5a13e5b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: - "3001:3000" user: "${UID:-1000}:${GID:-1000}" volumes: - - ./app/static:/app/static:rw + - ./app/static:/app/app/static:rw env_file: - .env depends_on: diff --git a/main.py b/main.py index c0d7188..03aba15 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,8 @@ from fastapi.staticfiles import StaticFiles from app.api import users, skins, capes, meta, server, store, pranks, marketplace, bonuses from fastapi.middleware.cors import CORSMiddleware +from app.core.config import CAPES_DIR, CAPES_STORE_DIR, SKINS_DIR + app = FastAPI() app.include_router(meta.router) @@ -16,9 +18,9 @@ app.include_router(marketplace.router) app.include_router(bonuses.router) # Монтируем статику -app.mount("/skins", StaticFiles(directory="app/static/skins"), name="skins") -app.mount("/capes", StaticFiles(directory="app/static/capes"), name="capes") -app.mount("/capes_store", StaticFiles(directory="app/static/capes_store"), name="capes_store") +app.mount("/skins", StaticFiles(directory=str(SKINS_DIR)), name="skins") +app.mount("/capes", StaticFiles(directory=str(CAPES_DIR)), name="capes") +app.mount("/capes_store", StaticFiles(directory=str(CAPES_STORE_DIR)), name="capes_store") # CORS, middleware и т.д. app.add_middleware(