'Return a filtered list of enabled providers based
on the course passed in. Cache this result per request to avoid
needing to call the provider filter api hundreds of times.
Arguments:
course: The course XBlock'

@classmethod
def _providers_for_course(cls, course):

    request_cache = RequestCache.get_request_cache()
    if (course is None):
        cache_key = ENABLED_OVERRIDE_PROVIDERS_KEY.format(course_id='None')
    else:
        cache_key = ENABLED_OVERRIDE_PROVIDERS_KEY.format(course_id=unicode(course.id))
    enabled_providers = request_cache.data.get(cache_key, NOTSET)
    if (enabled_providers == NOTSET):
        enabled_providers = tuple((provider_class for provider_class in cls.provider_classes if provider_class.enabled_for(course)))
        request_cache.data[cache_key] = enabled_providers
    return enabled_providers
