fix: Include all blocks and skip access checks for get_divided_discussions (#29539)

This commit is contained in:
Kshitij Sobti
2021-12-09 11:20:31 +00:00
committed by GitHub
parent ffa0fdee7a
commit 00e3affa90

View File

@@ -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)