From 00e3affa9041cd508f8fb6819af28b492fdaa05a Mon Sep 17 00:00:00 2001 From: Kshitij Sobti Date: Thu, 9 Dec 2021 11:20:31 +0000 Subject: [PATCH] fix: Include all blocks and skip access checks for get_divided_discussions (#29539) --- openedx/core/djangoapps/discussions/utils.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/openedx/core/djangoapps/discussions/utils.py b/openedx/core/djangoapps/discussions/utils.py index cf803885d9..c05cfba63b 100644 --- a/openedx/core/djangoapps/discussions/utils.py +++ b/openedx/core/djangoapps/discussions/utils.py @@ -32,7 +32,7 @@ def get_divided_discussions( divided_inline_discussions = [] course_wide_discussions = [topic['id'] for __, topic in course.discussion_topics.items()] - all_discussions = get_discussion_categories_ids(course, None) + all_discussions = get_discussion_categories_ids(course, None, include_all=True) for divided_discussion_id in discussion_settings.divided_discussions: if divided_discussion_id in course_wide_discussions: @@ -43,7 +43,7 @@ def get_divided_discussions( return divided_course_wide_discussions, divided_inline_discussions -def get_discussion_categories_ids(course: CourseBlock, user: Optional[User]) -> List[str]: +def get_discussion_categories_ids(course: CourseBlock, user: Optional[User], include_all: bool = False) -> List[str]: """ Returns a list of available ids of categories for the course that are accessible to the given user. @@ -51,10 +51,11 @@ def get_discussion_categories_ids(course: CourseBlock, user: Optional[User]) -> Args: course: Course for which to get the ids. user: User to check for access. + include_all: Whether categories from all blocks should be included. """ accessible_discussion_ids = [ - xblock.discussion_id for xblock in get_accessible_discussion_xblocks(course, user) + xblock.discussion_id for xblock in get_accessible_discussion_xblocks(course, user, include_all) ] return course.top_level_discussion_topic_ids + accessible_discussion_ids @@ -62,12 +63,13 @@ def get_discussion_categories_ids(course: CourseBlock, user: Optional[User]) -> def get_accessible_discussion_xblocks( course: CourseBlock, user: Optional[User], + include_all: bool = False, ) -> List[DiscussionXBlock]: """ Return a list of all valid discussion xblocks in this course that are accessible to the given user. """ - include_all = getattr(user, 'is_community_ta', False) + include_all = include_all or getattr(user, 'is_community_ta', False) return get_accessible_discussion_xblocks_by_course_id(course.id, user, include_all=include_all)