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

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 

19 

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) 

31 

32 

33@trash_router.get("") 

34async def get_trash( 

35 params: BaseGetListQueryParams = Depends(), 

36) -> GenericGetListResponse[OrderDBModel]: 

37 return await trash_data_grabber.get_list(params) 

38 

39 

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 ) 

48 

49 

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) 

56 

57 

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)