def bulk_cache_cohorts(course_key, users): """ Pre-fetches and caches the cohort assignments for the given users, for later fast retrieval by get_cohort. """ # before populating the cache with another bulk set of data, # remove previously cached entries to keep memory usage low. request_cache.clear_cache(COHORT_CACHE_NAMESPACE) cache = request_cache.get_cache(COHORT_CACHE_NAMESPACE) if is_course_cohorted(course_key): cohorts_by_user = { membership.user: membership for membership in CohortMembership.objects.filter( user__in=users, course_id=course_key).select_related('user') } for user, membership in cohorts_by_user.iteritems(): cache[_cohort_cache_key(user.id, course_key)] = membership.course_user_group uncohorted_users = filter(lambda u: u not in cohorts_by_user, users) else: uncohorted_users = users for user in uncohorted_users: cache[_cohort_cache_key(user.id, course_key)] = None
def bulk_cache_cohorts(course_key, users): """ Pre-fetches and caches the cohort assignments for the given users, for later fast retrieval by get_cohort. """ # before populating the cache with another bulk set of data, # remove previously cached entries to keep memory usage low. request_cache.clear_cache(COHORT_CACHE_NAMESPACE) cache = request_cache.get_cache(COHORT_CACHE_NAMESPACE) if is_course_cohorted(course_key): cohorts_by_user = { membership.user: membership for membership in CohortMembership.objects.filter(user__in=users, course_id=course_key).select_related('user__id') } for user, membership in cohorts_by_user.iteritems(): cache[_cohort_cache_key(user.id, course_key)] = membership.course_user_group uncohorted_users = filter(lambda u: u not in cohorts_by_user, users) else: uncohorted_users = users for user in uncohorted_users: cache[_cohort_cache_key(user.id, course_key)] = None