Files
toolbox/api/routers/__init__.py
T

86 lines
3.2 KiB
Python

from fastapi import APIRouter, Depends, Request
from db.handlers.categories import CategoryHandler
from utils import render, requestDict, logger
from .user import router as user
from .stocks import router as stocks
from .toolbox import router as toolbox
from .toolkit import router as toolkit
router = APIRouter()
router.include_router(user, prefix="/user", tags=["user"])
router.include_router(stocks, prefix="/stocks", tags=["stocks"])
router.include_router(toolbox, prefix="/toolbox", tags=["toolbox"])
router.include_router(toolkit, prefix="/toolkit", tags=["toolkit"])
@router.get("/")
async def main_page(request: Request):
return await render(request)
@router.post("/")
async def post_requests(
request_data: dict = Depends(requestDict),
):
from db.handlers.records import ServiceRecordsHandler, StocksRecordsHandler
from db.handlers.toolbox import ToolboxHandler
from db.handlers.toolkit import ToolkitHandler
from db.handlers.user import UserHandler
reqData = {
"tab": request_data.get("body").get("tabId"),
"userData": request_data.get("body").get("cookiesData").get("userData"),
"accessData": request_data.get("body").get("cookiesData").get("accessData"),
}
resultData = {"status": "error", "data": {}}
logger.info(f"Получение данных для вкладки {reqData.get('tab')}")
match reqData.get("tab"):
case "toolbox":
if reqData.get("accessData").get("view_all_toolboxes", False):
toolbox = await ToolboxHandler.getAll()
else:
toolbox = await ToolboxHandler.getByOwner(
reqData.get("userData").get("id")
)
if toolbox:
resultData["status"] = "ok"
resultData["data"] = toolbox
case "requests":
requests = await StocksRecordsHandler.get(reqData.get("userData").get("id"))
if isinstance(requests, list):
resultData["status"] = "ok"
resultData["data"] = requests
case "toolkits":
toolkits = await ToolkitHandler.getAll()
categories = await CategoryHandler.getAll()
if toolkits and categories:
resultData["status"] = "ok"
resultData["data"] = {
"toolkits": toolkits,
"categories": categories,
}
# logger.info(resultData)
case "jurnal_toolkits":
jurnal_toolkits = await StocksRecordsHandler.get()
if jurnal_toolkits:
resultData["status"] = "ok"
resultData["data"] = jurnal_toolkits
case "jurnal_service":
jurnal_service = await ServiceRecordsHandler.get()
if jurnal_service:
resultData["status"] = "ok"
resultData["data"] = jurnal_service
case "users":
users = await UserHandler.getAll()
if users:
for user in users:
user.pop("hashed_password")
resultData["status"] = "ok"
resultData["data"] = users
case _:
pass
return resultData