@@ -63,7 +63,7 @@ def build_text_filter(item):
@router.get ( " /events " , tags = [ " events " ] , response_model = list [ events . EventOut ] )
@router.get ( " /events " , tags = [ " events " ] , response_model = list [ events . EventOutWithInterested ] )
async def read_events (
authorize : Annotated [ bool , Depends ( permissions_checker . PermissionChecker ( roles = [ " Admin " , " User " ] ) ) ] ,
user : users . User = Depends ( users_token . get_current_user ) , # 👈 récupère l’ utilisateur courant
@@ -128,7 +128,7 @@ async def read_events(
event_repository = events . EventRepository ( database = database . database )
list_events = [ ]
for event_index in event_repository . find_by ( object_search , limit = limit , skip = skip , sort = [ ( " start_date " , 1 ) ] ) :
interested_users = getattr ( event_index , " interested_users" , [ ] )
interested_users = event_index . interested_users
is_interested = ObjectId ( user . id ) in interested_users
event = events . EventOutWithInterested (
id = event_index . id ,
@@ -150,7 +150,7 @@ async def read_events(
return list_events
@router.get ( " /events/search " , tags = [ " events " ] , response_model = list [ events . EventOut ] )
@router.get ( " /events/search " , tags = [ " events " ] , response_model = list [ events . EventOutWithInterested ] )
async def search_events (
authorize : Annotated [ bool , Depends ( permissions_checker . PermissionChecker ( roles = [ " Admin " , " User " ] ) ) ] ,
user : users . User = Depends ( users_token . get_current_user ) , # 👈 récupère l’ utilisateur courant
@@ -209,7 +209,7 @@ async def search_events(
event_repository = events . EventRepository ( database = database . database )
list_events = [ ]
for event_index in event_repository . find_by ( object_search , limit = limit , skip = skip , sort = [ ( " start_date " , 1 ) ] ) :
interested_users = getattr ( event_index , " interested_users" , [ ] )
interested_users = event_index . interested_users
is_interested = ObjectId ( user . id ) in interested_users
event = events . EventOutWithInterested (
id = event_index . id ,
@@ -253,7 +253,7 @@ async def read_events_count(authorize: Annotated[bool, Depends(permissions_check
return response
@router.get ( " /events/ {item_id} " , tags = [ " events " ] , response_model = events . Event )
@router.get ( " /events/ {item_id} " , tags = [ " events " ] , response_model = events . EventOut )
async def read_events_id ( item_id : str , authorize : Annotated [ bool , Depends ( permissions_checker . PermissionChecker ( roles = [ " Admin " ] ) ) ] ) :
event_repository = events . EventRepository ( database = database . database )
event = event_repository . find_one_by_id ( ObjectId ( item_id ) )
@@ -457,12 +457,12 @@ async def patch_events_id(item_id : str, authorize: Annotated[bool, Depends(perm
@router.post ( " /events/ {event_id} /interest " , tags = [ " events " ] )
async def toggle_interest ( event_id : str , user : users . User = Depends ( users_token . get_current_user ) ) :
event_repository = events . EventRepository ( database = database . database )
event = event_repository . get ( ObjectId ( event_id ) )
event = event_repository . find_one_by_id ( ObjectId ( event_id ) )
if not event :
raise HTTPException ( status_code = 404 , detail = " Event not found " )
interested_users = getattr ( event , " interested_users" , [ ] )
interested_users = event . interested_users
user_obj_id = ObjectId ( user . id )
if user_obj_id in interested_users :
@@ -471,7 +471,8 @@ async def toggle_interest(event_id: str, user: users.User = Depends(users_token.
else :
# Ajouter l’ utilisateur
interested_users . append ( user_obj_id )
event . interested_users = interested_users
event_repository . update ( { " _id " : ObjectId ( event_id ) } , { " $set " : { " interested_users " : interested_users } } )
event_repository . save ( event )
return { " event_id " : event_id , " interested " : user_obj_id in interested_users , " interested_count " : len ( interested_users ) }