34 lines
925 B
Python
34 lines
925 B
Python
"""
|
|
Views dedicated to rendering xblocks.
|
|
"""
|
|
from __future__ import absolute_import
|
|
|
|
import logging
|
|
import mimetypes
|
|
|
|
from xblock.core import XBlock
|
|
|
|
from django.conf import settings
|
|
from django.http import Http404, HttpResponse
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
def xblock_resource(request, block_type, uri): # pylint: disable=unused-argument
|
|
"""
|
|
Return a package resource for the specified XBlock.
|
|
"""
|
|
try:
|
|
xblock_class = XBlock.load_class(block_type, settings.XBLOCK_SELECT_FUNCTION)
|
|
content = xblock_class.open_local_resource(uri)
|
|
except IOError:
|
|
log.info('Failed to load xblock resource', exc_info=True)
|
|
raise Http404
|
|
except Exception: # pylint: disable-msg=broad-except
|
|
log.error('Failed to load xblock resource', exc_info=True)
|
|
raise Http404
|
|
|
|
mimetype, _ = mimetypes.guess_type(uri)
|
|
return HttpResponse(content, mimetype=mimetype)
|