склади и инструмент готовы
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
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
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
router.include_router(user, prefix="/user", tags=["user"])
|
||||
router.include_router(stocks, prefix="/stocks", tags=["stocks"])
|
||||
|
||||
|
||||
@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:
|
||||
resultData["status"] = "ok"
|
||||
resultData["data"] = {
|
||||
"toolkits": toolkits,
|
||||
"categories": categories,
|
||||
}
|
||||
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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,149 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from db.handlers.actions import StocksActions
|
||||
from db.handlers.categories import CategoryHandler
|
||||
from db.handlers.records import StocksRecordsHandler
|
||||
from db.handlers.stock import StockHandler
|
||||
from db.handlers.toolbox import ToolboxHandler
|
||||
from db.handlers.toolkit import ToolkitHandler
|
||||
from utils import requestDict, logger
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post("/")
|
||||
async def post_requests(
|
||||
request_data: dict = Depends(requestDict),
|
||||
):
|
||||
toolboxId = request_data.get("body").get("toolboxId")
|
||||
logger.info(f"Получение инструментов для тулбокса {toolboxId}")
|
||||
response = {"status": "error", "data": {}}
|
||||
|
||||
stocksData = await StockHandler.getByToolboxId(toolboxId)
|
||||
if not stocksData:
|
||||
return response
|
||||
toolkitsIds = set(stock["toolkit_id"] for stock in stocksData)
|
||||
toolkitsData = await ToolkitHandler.getSeveral(list(toolkitsIds))
|
||||
if not toolkitsData:
|
||||
return response
|
||||
|
||||
categoriesIds = set(toolkit["category_id"] for toolkit in toolkitsData)
|
||||
categoriesData = await CategoryHandler.getSeveral(list(categoriesIds))
|
||||
if not categoriesData:
|
||||
return response
|
||||
|
||||
response["status"] = "ok"
|
||||
response["data"] = {
|
||||
"stocks": stocksData,
|
||||
"toolkits": toolkitsData,
|
||||
"categories": categoriesData,
|
||||
}
|
||||
return response
|
||||
|
||||
|
||||
@router.post("/action", summary="Запрос на перемещение инструмента")
|
||||
async def post_requests(
|
||||
request_data: dict = Depends(requestDict),
|
||||
):
|
||||
action = request_data.get("body").get("action").get("operation")
|
||||
logger.info(f"Получение запроса на перемещение ({action}) инструмента")
|
||||
userId = request_data.get("body").get("userData").get("id")
|
||||
sourceTollboxId = (
|
||||
request_data.get("body").get("action").get("selectedItem").get("toolboxId")
|
||||
)
|
||||
toolkitId = request_data.get("body").get("action").get("selectedItem").get("id")
|
||||
quantity = request_data.get("body").get("action").get("quantity")
|
||||
price = round(
|
||||
request_data.get("body").get("action").get("selectedItem").get("totalCost")
|
||||
/ request_data.get("body").get("action").get("selectedItem").get("available"),
|
||||
2,
|
||||
)
|
||||
reason = request_data.get("body").get("action").get("comment")
|
||||
|
||||
resonse = {"status": "error"}
|
||||
|
||||
match action:
|
||||
case "writeoff":
|
||||
result = await StocksActions.movingRequest(
|
||||
"Списание",
|
||||
toolkitId,
|
||||
sourceTollboxId,
|
||||
None,
|
||||
quantity,
|
||||
reason,
|
||||
userId,
|
||||
price,
|
||||
)
|
||||
if result:
|
||||
resonse["status"] = "ok"
|
||||
case "get":
|
||||
targetTollboxId = await ToolboxHandler.getIdByOwner(userId)
|
||||
result = await StocksActions.takeToolkit(
|
||||
sourceTollboxId,
|
||||
targetTollboxId,
|
||||
toolkitId,
|
||||
quantity,
|
||||
reason,
|
||||
userId,
|
||||
price,
|
||||
)
|
||||
if result:
|
||||
resonse["status"] = "ok"
|
||||
case "return":
|
||||
targetTollboxId = await StocksRecordsHandler.getOriginalToolboxId(
|
||||
toolkitId, sourceTollboxId
|
||||
)
|
||||
if targetTollboxId:
|
||||
result = await StocksActions.movingRequest(
|
||||
"Возврат",
|
||||
toolkitId,
|
||||
sourceTollboxId,
|
||||
targetTollboxId,
|
||||
quantity,
|
||||
reason,
|
||||
userId,
|
||||
price,
|
||||
)
|
||||
if result:
|
||||
resonse["status"] = "ok"
|
||||
return resonse
|
||||
|
||||
|
||||
@router.post("/toolkit", summary="Запрос остатка инструмента")
|
||||
async def toolkit_request(
|
||||
request_data: dict = Depends(requestDict),
|
||||
):
|
||||
response = {"status": "error", "data": {}}
|
||||
logger.info(f"Получение запроса остатка инструмента")
|
||||
# logger.info(request_data)
|
||||
toolkitId = request_data.get("body").get("toolkitId")
|
||||
stocks = await StockHandler.getByToolkitId(toolkitId)
|
||||
if not stocks:
|
||||
return response
|
||||
userId = request_data.get("body").get("userId")
|
||||
allToolboxes = request_data.get("body").get("allToolboxes")
|
||||
toolboxes = (
|
||||
await ToolboxHandler.getByOwner(userId)
|
||||
if not allToolboxes
|
||||
else await ToolboxHandler.getAll()
|
||||
)
|
||||
if not toolboxes:
|
||||
return response
|
||||
toolboxesTitles = {toolbox["id"]: toolbox["title"] for toolbox in toolboxes}
|
||||
stocksData = {"count": 0, "toolboxes": {}}
|
||||
for stock in stocks:
|
||||
toolboxTitle = toolboxesTitles.get(stock["toolbox_id"], None)
|
||||
if not toolboxTitle:
|
||||
continue
|
||||
stocksData["count"] += stock["quantity"]
|
||||
if toolboxTitle not in stocksData["toolboxes"]:
|
||||
stocksData["toolboxes"][toolboxTitle] = {
|
||||
"count": stock["quantity"],
|
||||
"placement": stock["placement"],
|
||||
}
|
||||
else:
|
||||
stocksData["toolboxes"][toolboxTitle]["count"] += stock["quantity"]
|
||||
response["status"] = "ok"
|
||||
response["data"] = stocksData
|
||||
logger.info(response)
|
||||
return response
|
||||
@@ -0,0 +1,44 @@
|
||||
from fastapi import APIRouter, Depends, Request
|
||||
from db.handlers.access import AccessLevelHandler
|
||||
from db.handlers.user import UserHandler
|
||||
from utils import requestDict, logger, render
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/", name="userInfo", summary="Получение информации о пользователе")
|
||||
async def get_user():
|
||||
return
|
||||
|
||||
|
||||
@router.post("/")
|
||||
async def create_user():
|
||||
return
|
||||
|
||||
|
||||
@router.get("/login", name="Authentication", summary="Авторизация пользователя")
|
||||
async def authenticationPage(request: Request):
|
||||
return await render(request)
|
||||
|
||||
|
||||
@router.post("/login")
|
||||
async def authentication(
|
||||
request_data: dict = Depends(requestDict),
|
||||
):
|
||||
resultData = {"status": "error", "user": {}, "access": {}}
|
||||
login = request_data.get("body").get("login", None)
|
||||
password = request_data.get("body").get("password", None)
|
||||
if not login or not password:
|
||||
logger.error("Не указан логин или пароль")
|
||||
return resultData
|
||||
userData = await UserHandler.auth(login, password)
|
||||
if not userData:
|
||||
return resultData
|
||||
accessData = await AccessLevelHandler.get(userData["access_level_id"])
|
||||
if not accessData:
|
||||
return resultData
|
||||
resultData["status"] = "ok"
|
||||
resultData["user"] = userData
|
||||
resultData["access"] = accessData
|
||||
return resultData
|
||||
Reference in New Issue
Block a user