Coverage for api/endpoints/orders/trash.py: 83%
24 statements
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
1from fastapi import APIRouter, Depends
2from handlers.grabbers.orders import trash_data_grabber
3from handlers.orders.trash_orders import (
4 on_put_trash_to_buffer,
5 on_remove_from_trash,
6)
7from keycloak import idp
8from sotrans_models.models._mongo import PydanticObjectIdPath
9from sotrans_models.models.orders.order import OrderDBModel, OrderUpdateModel
10from sotrans_models.models.responses import (
11 ErrorRepr,
12 GenericGetListResponse,
13 MultiselectError,
14)
15from sotrans_models.models.roles import SotransRole
16from starlette import status
17from utils.data_grabber import BaseGetListQueryParams, BaseGetOneQueryParams
18from utils.helper import multiexec
20trash_router = APIRouter(
21 prefix="/trash-orders",
22 tags=["trash", "orders"],
23 dependencies=[
24 Depends(
25 idp.get_current_user(
26 required_role_names=[SotransRole.company_logistician]
27 )
28 ),
29 ],
30)
33@trash_router.get("")
34async def get_trash(
35 params: BaseGetListQueryParams = Depends(),
36) -> GenericGetListResponse[OrderDBModel]:
37 return await trash_data_grabber.get_list(params)
40@trash_router.put(
41 "/{order_ids}/to-buffer", responses={404: {"model": ErrorRepr}}
42)
43async def from_trash_to_buf(order_ids: str) -> MultiselectError:
44 return await multiexec(
45 order_ids,
46 on_put_trash_to_buffer,
47 )
50@trash_router.get("/{order_id}", responses={404: {"model": ErrorRepr}})
51async def get_trash_details(
52 order_id: PydanticObjectIdPath,
53 params: BaseGetOneQueryParams = Depends(),
54) -> OrderDBModel:
55 return await trash_data_grabber.get_one(order_id, params)
58@trash_router.delete("/{order_ids}", status_code=status.HTTP_204_NO_CONTENT)
59async def remove_from_trash(
60 order_ids: str, order: OrderUpdateModel | None = None
61):
62 return await multiexec(order_ids, on_remove_from_trash, order)