@@ -452,13 +452,38 @@ def add_user_to_group(group_immutable_id: str):
452452 {"$addToSet" : {"groups" : {"immutable_id" : ObjectId (group_immutable_id )}}},
453453 )
454454
455- if update_user .modified_count == 1 :
456- return jsonify ({ "status" : "success" , "message" : "User added to group." }), 200
455+ if update_user .matched_count == 0 :
456+ raise BadRequest ( "Unable to add user to group: user does not exist." )
457457
458- if not update_user .modified_count == 1 :
459- if update_user .matched_count == 0 :
460- raise BadRequest ("Unable to add user to group: user does not exist." )
461- if update_user .matched_count == 1 :
462- return jsonify ({"status" : "success" , "message" : "User already in group." }), 304
458+ if update_user .modified_count == 0 :
459+ return jsonify ({"status" : "success" , "message" : "User already in group." }), 304
463460
464- raise BadRequest ("Unable to add user to group." )
461+ return jsonify ({"status" : "success" , "message" : "User added to group." }), 200
462+
463+
464+ @ADMIN .route ("/groups/<group_immutable_id>/members/<user_id>" , methods = ["DELETE" ])
465+ def remove_user_from_group (group_immutable_id : str , user_id : str ):
466+ group_exists = flask_mongo .db .groups .find_one (
467+ {"_id" : ObjectId (group_immutable_id )},
468+ )
469+ if not group_exists :
470+ raise NotFound ("Group does not exist." )
471+
472+ update_user = flask_mongo .db .users .update_one (
473+ {"_id" : ObjectId (user_id )},
474+ {"$pull" : {"groups" : {"immutable_id" : ObjectId (group_immutable_id )}}},
475+ )
476+
477+ if update_user .matched_count == 0 :
478+ raise BadRequest ("Unable to remove user from group: user does not exist." )
479+
480+ # Also remove user from group's managers list if they are a manager
481+ flask_mongo .db .groups .update_one (
482+ {"_id" : ObjectId (group_immutable_id )},
483+ {"$pull" : {"managers" : ObjectId (user_id )}},
484+ )
485+
486+ if update_user .modified_count == 0 :
487+ return jsonify ({"status" : "success" , "message" : "User was not in group." }), 304
488+
489+ return jsonify ({"status" : "success" , "message" : "User removed from group." }), 200
0 commit comments