diff --git a/forum/api/users.py b/forum/api/users.py index 8355f8d3..6c4c0604 100644 --- a/forum/api/users.py +++ b/forum/api/users.py @@ -293,11 +293,10 @@ def _get_stats_for_usernames( course_id: str, usernames: list[str], backend: Any ) -> list[dict[str, Any]]: """Get stats for specific usernames.""" - users = backend.get_users() + users = backend.get_users(username__in=usernames) + stats_query = [] for user in users: - if user["username"] not in usernames: - continue course_stats = user.get("course_stats") if course_stats: for course_stat in course_stats: diff --git a/forum/backends/mysql/api.py b/forum/backends/mysql/api.py index da55a552..06e8c95b 100644 --- a/forum/backends/mysql/api.py +++ b/forum/backends/mysql/api.py @@ -2157,8 +2157,13 @@ def get_users(**kwargs: Any) -> list[dict[str, Any]]: Returns: A list of users. """ + kwargs = kwargs.copy() + sort_key = kwargs.pop("sort_key", None) + username_in = kwargs.pop("username__in", None) + if username_in is not None: + kwargs["user__username__in"] = username_in + forum_users = ForumUser.objects.filter(**kwargs) - sort_key = kwargs.get("sort_key") if sort_key: forum_users = forum_users.order_by(sort_key)