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
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
1from typing import Annotated
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
16recommendations_router = APIRouter(prefix="/orders", tags=["orders"])
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 )
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)