'Computes a list of enabled providers based on the given XBlock.
The result is cached per request to avoid the overhead incurred
by filtering override providers hundreds of times.
Arguments:
block: An XBlock'

@classmethod
def _providers_for_block(cls, block):

    course_id = unicode(block.location.course_key)
    cache_key = ENABLED_MODULESTORE_OVERRIDE_PROVIDERS_KEY.format(course_id=course_id)
    request_cache = RequestCache.get_request_cache()
    enabled_providers = request_cache.data.get(cache_key)
    if (enabled_providers is None):
        enabled_providers = [provider_class for provider_class in cls.provider_classes if provider_class.enabled_for(block)]
        request_cache.data[cache_key] = enabled_providers
    return enabled_providers
