From ecb052125c99ef0cbc5b0e458e528943b12bf39c Mon Sep 17 00:00:00 2001 From: Cali Stenson <cstenson@edx.org> Date: Fri, 16 Nov 2018 13:11:17 -0500 Subject: [PATCH] Move get_user_partition_groups to partition_services to call from multiple contexts. --- .../xmodule/partitions/partitions_service.py | 27 ++++++++++++++++ .../transformers/user_partitions.py | 31 ++----------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/common/lib/xmodule/xmodule/partitions/partitions_service.py b/common/lib/xmodule/xmodule/partitions/partitions_service.py index d7320773637..3b67e15a9e4 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 69df9e62013..c296812bab9 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 -- GitLab