diff --git a/forum/__init__.py b/forum/__init__.py index 186652c8..5084d37a 100644 --- a/forum/__init__.py +++ b/forum/__init__.py @@ -2,4 +2,4 @@ Openedx forum app. """ -__version__ = "0.6.8" +__version__ = "0.6.9" diff --git a/forum/api/users.py b/forum/api/users.py index fbe5608b..ded86e8b 100644 --- a/forum/api/users.py +++ b/forum/api/users.py @@ -303,11 +303,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/mongodb/api.py b/forum/backends/mongodb/api.py index 4f33b9a4..41c3e922 100644 --- a/forum/backends/mongodb/api.py +++ b/forum/backends/mongodb/api.py @@ -1995,6 +1995,10 @@ def get_course_id_by_comment_id(comment_id: str) -> str | None: @staticmethod def get_users(**kwargs: Any) -> list[dict[str, Any]]: """Get users.""" + kwargs = kwargs.copy() + username_in = kwargs.pop("username__in", None) + if username_in is not None: + kwargs["username"] = {"$in": username_in} return list(Users().get_list(**kwargs)) @staticmethod diff --git a/forum/backends/mysql/api.py b/forum/backends/mysql/api.py index 49be84b8..4ccdd1ac 100644 --- a/forum/backends/mysql/api.py +++ b/forum/backends/mysql/api.py @@ -2606,8 +2606,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)