[PERF-303] Integer XBlocks/XModules into the static asset pipeline. This PR, based on hackathon work from Christina/Andy, implements a way to discover all installed XBlocks and XModules and to enumerate their public assets, then pulling them in during the collectstatic phase and hashing them. In turn, the methods for generating URLs to resources will then returned the hashed name for assets, allowing them to be served from nginx/CDNs, and cached heavily.
26 lines
611 B
Python
26 lines
611 B
Python
"""
|
|
XBlock runtime implementations for edX Studio
|
|
"""
|
|
|
|
from django.core.urlresolvers import reverse
|
|
|
|
|
|
def handler_url(block, handler_name, suffix='', query='', thirdparty=False):
|
|
"""
|
|
Handler URL function for Studio
|
|
"""
|
|
|
|
if thirdparty:
|
|
raise NotImplementedError("edX Studio doesn't support third-party xblock handler urls")
|
|
|
|
url = reverse('component_handler', kwargs={
|
|
'usage_key_string': unicode(block.scope_ids.usage_id).encode('utf-8'),
|
|
'handler': handler_name,
|
|
'suffix': suffix,
|
|
}).rstrip('/')
|
|
|
|
if query:
|
|
url += '?' + query
|
|
|
|
return url
|