diff --git a/common/lib/xmodule/xmodule/partitions/partitions_service.py b/common/lib/xmodule/xmodule/partitions/partitions_service.py index d73207736379eec80f3d0e18355d9d8d915619b4..3b67e15a9e499a1ace5b7d4f9250400682434024 100644 --- a/common/lib/xmodule/xmodule/partitions/partitions_service.py +++ b/common/lib/xmodule/xmodule/partitions/partitions_service.py @@ -41,6 +41,33 @@ def get_all_partitions_for_course(course, active_only=False): all_partitions = [partition for partition in all_partitions if partition.active] return all_partitions +def get_user_partition_groups(course_key, user): + """ + Collect group ID for each partition in this course for this user. + + Arguments: + course_key (CourseKey) + user_partitions (list[UserPartition]) + user (User) + + Returns: + dict[int: Group]: Mapping from user partitions to the group to + which the user belongs in each partition. If the user isn't + in a group for a particular partition, then that partition's + ID will not be in the dict. + """ + user_partitions = get_all_partitions_for_course(course) + partition_groups = {} + for partition in user_partitions: + group = partition.scheme.get_group_for_user( + course_key, + user, + partition, + ) + if group is not None: + partition_groups[partition.id] = group + return partition_groups + def _get_dynamic_partitions(course): """ diff --git a/lms/djangoapps/course_blocks/transformers/user_partitions.py b/lms/djangoapps/course_blocks/transformers/user_partitions.py index 69df9e62013a5ea86a25014c090d3912a89fe056..c296812bab94b799e591c2631ef25ac65df0fe2c 100644 --- a/lms/djangoapps/course_blocks/transformers/user_partitions.py +++ b/lms/djangoapps/course_blocks/transformers/user_partitions.py @@ -6,7 +6,7 @@ from openedx.core.djangoapps.content.block_structure.transformer import ( BlockStructureTransformer, FilteringTransformerMixin ) -from xmodule.partitions.partitions_service import get_all_partitions_for_course +from xmodule.partitions.partitions_service import get_user_partition_groups from .split_test import SplitTestTransformer from .utils import get_field_on_block @@ -78,7 +78,7 @@ class UserPartitionTransformer(FilteringTransformerMixin, BlockStructureTransfor if not user_partitions: return [block_structure.create_universal_filter()] - user_groups = _get_user_partition_groups(usage_info.course_key, user_partitions, user) + user_groups = get_user_partition_groups(usage_info.course_key, user_partitions, user) group_access_filter = block_structure.create_removal_filter( lambda block_key: not ( @@ -239,30 +239,3 @@ class _MergedGroupAccess(object): # The user has access for every partition, grant access. return True - - -def _get_user_partition_groups(course_key, user_partitions, user): - """ - Collect group ID for each partition in this course for this user. - - Arguments: - course_key (CourseKey) - user_partitions (list[UserPartition]) - user (User) - - Returns: - dict[int: Group]: Mapping from user partitions to the group to - which the user belongs in each partition. If the user isn't - in a group for a particular partition, then that partition's - ID will not be in the dict. - """ - partition_groups = {} - for partition in user_partitions: - group = partition.scheme.get_group_for_user( - course_key, - user, - partition, - ) - if group is not None: - partition_groups[partition.id] = group - return partition_groups