создание, правка, удаление, скрытие инструмента

This commit is contained in:
2025-12-12 23:50:38 +03:00
parent 8b38d69980
commit f85ca7d002
19 changed files with 1607 additions and 162 deletions
+19 -1
View File
@@ -1,4 +1,5 @@
from fastapi import APIRouter, Depends, Request
from fastapi.responses import RedirectResponse
from db.handlers.categories import CategoryHandler
from utils import render, requestDict, logger
@@ -18,7 +19,24 @@ router.include_router(toolkit, prefix="/toolkit", tags=["toolkit"])
@router.get("/")
async def main_page(request: Request):
return await render(request)
cookies = request.cookies
checkList = ["toolbox_user", "toolbox_access"]
if all(key in cookies for key in checkList):
return await render(request)
else:
for key in checkList:
if key in cookies:
deleteCookie = key
break
else:
deleteCookie = None
if deleteCookie:
response = RedirectResponse(url="/user/login", status_code=302)
response.set_cookie(deleteCookie, "", expires=0)
return response
else:
return RedirectResponse(url="/user/login", status_code=302)
@router.post("/")
Binary file not shown.
Binary file not shown.
+93 -1
View File
@@ -9,6 +9,28 @@ from utils import requestDict, logger
router = APIRouter()
def handleResult(result: dict, response: dict) -> dict:
if "errorMessage" in result.keys():
response["message"] = result["errorMessage"]
else:
response["status"] = "ok"
return response
@router.get("/", summary="Получение инструмента")
async def get_toolkit(reqData: dict = Depends(requestDict)):
logger.info(f"Получение инструмента")
response = {"status": "error"}
toolkitId = reqData.get("query").get("toolkitId")
if toolkitId:
toolkit = await ToolkitHandler.get(int(toolkitId))
if toolkit:
# logger.info(toolkit)
response["status"] = "ok"
response["data"] = toolkit
return response
@router.post("/", summary="Запрос остатка инструмента")
async def toolkit_request(
reqData: dict = Depends(requestDict),
@@ -16,7 +38,6 @@ async def toolkit_request(
response = {"status": "error", "data": {}}
toolkitId = reqData.get("body").get("toolkitId")
logger.info(f"Получение запроса остатка инструмента #{toolkitId}")
# logger.info(request_data)
stocks = await StockHandler.getByToolkitId(toolkitId)
if not stocks:
return response
@@ -100,3 +121,74 @@ async def categories_batch(reqData: dict = Depends(requestDict)):
if success:
response["status"] = "ok"
return response
@router.get("/categories", summary="Получение категорий")
async def get_categories():
logger.info(f"Получение категорий")
response = {"status": "error"}
categories = await CategoryHandler.getAll()
if categories:
categoriesDict = {
category["id"]: {
"id": category["id"],
"title": category["title"],
"description": category["description"],
}
for category in categories
}
response["status"] = "ok"
response["data"] = categoriesDict
return response
@router.post("/hide", summary="Скрытие инструмента")
async def hide_toolkit(reqData: dict = Depends(requestDict)):
logger.info(f"Скрытие/отображение инструмента")
response = {"status": "error"}
toolkitId = int(reqData.get("body").get("toolkitId"))
userId = reqData.get("body").get("userId")
hidden = reqData.get("body").get("hidden")
result = await ToolkitHandler.hideToolkit(userId, toolkitId, hidden)
response = handleResult(result, response)
return response
@router.post("/manage", summary="Управление инструментами")
async def manage_toolkit(reqData: dict = Depends(requestDict)):
logger.info(f"Управление инструментами")
response = {"status": "error"}
action = reqData.get("body").get("action")
userId = reqData.get("body").get("UserId")
toolkitData = reqData.get("body").get("formData")
if "category_id" in toolkitData:
toolkitData["category_id"] = int(toolkitData.get("category_id"))
if "image" in toolkitData:
if (
not toolkitData.get("image").get("main")
or toolkitData.get("image").get("main") == ""
):
if len(toolkitData.get("image").get("additional")) == 0:
toolkitData.pop("image")
match action:
case "create":
toolkit = await ToolkitHandler.add(toolkitData, userId)
response = handleResult(toolkit, response)
case "copy":
toolkitData.pop("id")
toolkit = await ToolkitHandler.add(toolkitData, userId)
response = handleResult(toolkit, response)
case "update":
toolkit = await ToolkitHandler.edit(userId, **toolkitData)
response = handleResult(toolkit, response)
case "delete":
toolkit = await ToolkitHandler.delete(toolkitData.get("id"), userId)
response = handleResult(toolkit, response)
case _:
pass
logger.info(
f"Управление инструментами ({action}) прошло {'успешно' if response.get('status') == 'ok' else 'неуспешно'}"
)
return response