This commit is contained in:
2025-12-21 19:02:40 +03:00
parent 546c70cbcd
commit 599158f8e1
10 changed files with 639 additions and 27 deletions
+44 -9
View File
@@ -3,7 +3,7 @@ from db.handlers.stock import StockHandler
from db.handlers.user import UserHandler
from utils import logger, saveImage, safeFilename
from db import CRUD
from db.schemas.toolkit import Toolkit
from db.schemas.toolkit import Toolkit, ToolkitCompatibility
from sqlalchemy import select
from db.handlers.records import ServiceRecordsHandler
from utils.image import deleteImage
@@ -173,7 +173,7 @@ class ToolkitHandler:
@staticmethod
async def getAll():
query = select(Toolkit)
query = select(Toolkit).order_by(Toolkit.id)
toolkits = await CRUD.read(query, True)
return [toolkit.toDict() for toolkit in toolkits] if toolkits else []
@@ -184,16 +184,15 @@ class ToolkitHandler:
if not toolkit:
logger.error("Инструмент не найден")
return {}
data = toolkit.toDict()
if toolkit.comment_user_id:
user_data = await UserHandler.get(toolkit.comment_user_id)
data = toolkit.toDict()
data["comment_user_data"] = user_data
logger.info(data)
data["comment_user_data"] = user_data
return data
@staticmethod
async def getSeveral(toolkitIds: list[int]) -> list[dict]:
query = select(Toolkit).where(Toolkit.id.in_(toolkitIds))
query = select(Toolkit).where(Toolkit.id.in_(toolkitIds)).order_by(Toolkit.id)
toolkits = await CRUD.read(query, True)
return [toolkit.toDict() for toolkit in toolkits] if toolkits else []
@@ -230,9 +229,6 @@ class ToolkitHandler:
@staticmethod
async def addComment(toolkitId: int, user_id: int, comment: str):
logger.info(f"Добавление комментария к инструменту {toolkitId}...")
logger.info(f"Комментарий: {comment}")
logger.info(f"Пользователь: {user_id}")
query = select(Toolkit).where(Toolkit.id == toolkitId)
toolkit = await CRUD.read(query)
if not toolkit:
@@ -248,6 +244,45 @@ class ToolkitHandler:
logger.info(f"Комментарий к инструменту {toolkit.title} успешно добавлен")
return {"status": "ok"}
@staticmethod
async def addCompatibility(userId, data):
newCompatibility = await ToolkitCompatibility.add_compatibility(
int(data.get("toolkitId")), int(data.get("compatibleToolkitId"))
)
if "errorMessage" not in newCompatibility:
await ServiceRecordsHandler.add(
userId,
{
f"Добавлена совместимость": f"{data.get('toolkitId')} - {data.get('compatibleToolkitId')}"
},
)
return newCompatibility
@staticmethod
async def deleteCompatibility(userId, data):
deleteCompatibility = await ToolkitCompatibility.remove_compatibility(
int(data.get("toolkitId")), int(data.get("compatibleToolkitId"))
)
if "errorMessage" not in deleteCompatibility:
await ServiceRecordsHandler.add(
userId,
{
f"Удалена совместимость": f"{data.get('toolkitId')} - {data.get('compatibleToolkitId')}"
},
)
return deleteCompatibility
@staticmethod
async def getCompatibility(toolkitId: int):
result = await ToolkitCompatibility.get_compatibility(toolkitId)
if "errorMessage" in result:
return result
toolkitsIds = list(result.get("data").values())
toolkitsList = await ToolkitHandler.getSeveral(toolkitsIds)
toolkitsData = {toolkit["id"]: toolkit for toolkit in toolkitsList}
data = {"records": result.get("data"), "toolkits": toolkitsData}
return {"status": "ok", "data": data}
@staticmethod
async def initialize():
from .categories import CategoryHandler