Coverage for api/endpoints/orders/recommendations.py: 83%

18 statements  

« prev     ^ index     » next       coverage.py v7.6.2, created at 2024-10-10 03:02 +0300

1from typing import Annotated 

2 

3from fastapi import APIRouter, Depends 

4from handlers.orders.recommendations import ( 

5 get_all_recommendations, 

6 on_get_recommendations, 

7) 

8from keycloak import idp 

9from sotrans_models.models._mongo import PydanticObjectIdPath 

10from sotrans_models.models.orders.order import Recommendation 

11from sotrans_models.models.responses import GenericGetListResponse 

12from sotrans_models.models.roles import SotransRole 

13from sotrans_models.models.users import SotransOIDCUserModel 

14from utils.data_grabber import BaseGetListQueryParams 

15 

16recommendations_router = APIRouter(prefix="/orders", tags=["orders"]) 

17 

18 

19@recommendations_router.get( 

20 "/{order_id}/recommendations", response_model_exclude_unset=True 

21) 

22async def get_recommendations_for_order( 

23 order_id: PydanticObjectIdPath, 

24 user: Annotated[ 

25 SotransOIDCUserModel, 

26 Depends( 

27 idp.get_current_user( 

28 required_role_names=[SotransRole.carrier_logistician] 

29 ) 

30 ), 

31 ], 

32) -> GenericGetListResponse[Recommendation]: 

33 items = await on_get_recommendations(order_id, user) 

34 return GenericGetListResponse[Recommendation]( 

35 items=items, total=len(items) 

36 ) 

37 

38 

39@recommendations_router.get( 

40 "/recommendations", response_model_exclude_unset=True 

41) 

42async def get_all_recommendations_resp( 

43 user: Annotated[ 

44 SotransOIDCUserModel, 

45 Depends( 

46 idp.get_current_user( 

47 required_role_names=[SotransRole.carrier_logistician] 

48 ) 

49 ), 

50 ], 

51 params: BaseGetListQueryParams = Depends(), 

52) -> GenericGetListResponse[Recommendation]: 

53 return await get_all_recommendations(user, params)