diff --git a/brood/actions.py b/brood/actions.py index cbc39a6..ece3165 100644 --- a/brood/actions.py +++ b/brood/actions.py @@ -1161,7 +1161,7 @@ def create_group( def get_groups_for_user( - session: Session, user_id: uuid.UUID + session: Session, user_id: uuid.UUID, include_metrics: bool = True ) -> List[data.GroupUserResponse]: """ Get list of groups current user belongs to. @@ -1180,19 +1180,27 @@ def get_groups_for_user( .all() ) - groups_response = [ - data.GroupUserResponse( - group_id=group.id, - user_id=group.user_id, - user_type=group.user_type, - autogenerated=group.autogenerated, - group_name=group.name, - parent=group.parent, - num_users=get_num_users(session, group), - num_seats=get_num_seats(session, group), + groups_response = [] + + for group in groups: + num_users = None + num_seats = None + if include_metrics: + num_users = get_num_users(session, group) + num_seats = get_num_seats(session, group) + + groups_response.append( + data.GroupUserResponse( + group_id=group.id, + user_id=group.user_id, + user_type=group.user_type, + autogenerated=group.autogenerated, + group_name=group.name, + parent=group.parent, + num_users=num_users, + num_seats=num_seats, + ) ) - for group in groups - ] return groups_response diff --git a/brood/api.py b/brood/api.py index 10374cd..a6bc574 100644 --- a/brood/api.py +++ b/brood/api.py @@ -810,13 +810,16 @@ async def get_group_children_handler( async def get_groups_handler( current_user: models.User = Depends(get_current_user), db_session=Depends(yield_db_session_from_env), + include_metrics: bool = Query(True), ) -> data.GroupUserListResponse: """ Get list of groups user belongs to. """ groups_list: Optional[List[data.GroupUserResponse]] = [] try: - groups_list = actions.get_groups_for_user(db_session, user_id=current_user.id) + groups_list = actions.get_groups_for_user( + db_session, user_id=current_user.id, include_metrics=include_metrics + ) except Exception as e: logger.error(f"Error getting list of groups for user: {str(e)}") raise HTTPException(status_code=500)