Commit 20f1feb7 by David Adams

Fix for static path parsing

When a url contains a query parameter it gets incorrectly parsed
when replacing the /static portion.

This fix handles urls with query parameters.
parent 30861d0b
...@@ -90,6 +90,20 @@ def test_raw_static_check(): ...@@ -90,6 +90,20 @@ def test_raw_static_check():
assert_equals(path, replace_static_urls(path, text)) assert_equals(path, replace_static_urls(path, text))
@patch('static_replace.staticfiles_storage')
@patch('static_replace.modulestore')
def test_static_url_with_query(mock_modulestore, mock_storage):
"""
Make sure urls with query have the parameter section unaltered
"""
mock_storage.exists.return_value = False
mock_modulestore.return_value = Mock(MongoModuleStore)
pre_text = 'EMBED src ="/static/LAlec04_controller.swf?csConfigFile=/c4x/org/course/asset/LAlec04_config.xml"'
post_text = 'EMBED src ="/c4x/org/course/asset/LAlec04_controller.swf?csConfigFile=/c4x/org/course/asset/LAlec04_config.xml"'
assert_equals(post_text, replace_static_urls(pre_text, DATA_DIRECTORY, COURSE_ID))
def test_regex(): def test_regex():
yes = ('"/static/foo.png"', yes = ('"/static/foo.png"',
'"/static/foo.png"', '"/static/foo.png"',
......
...@@ -6,6 +6,7 @@ XASSET_THUMBNAIL_TAIL_NAME = '.jpg' ...@@ -6,6 +6,7 @@ XASSET_THUMBNAIL_TAIL_NAME = '.jpg'
import os import os
import logging import logging
import StringIO import StringIO
from urlparse import urlparse, urlunparse
from xmodule.modulestore import Location from xmodule.modulestore import Location
from .django import contentstore from .django import contentstore
...@@ -125,8 +126,14 @@ class StaticContent(object): ...@@ -125,8 +126,14 @@ class StaticContent(object):
a course_id a course_id
""" """
org, course_num, __ = course_id.split("/") org, course_num, __ = course_id.split("/")
loc = StaticContent.compute_location(org, course_num, path)
return StaticContent.get_url_path_from_location(loc) # Generate url of urlparse.path component
scheme, netloc, orig_path, params, query, fragment = urlparse(path)
loc = StaticContent.compute_location(org, course_num, orig_path)
loc_url = StaticContent.get_url_path_from_location(loc)
# Reconstruct with new path
return urlunparse((scheme, netloc, loc_url, params, query, fragment))
def stream_data(self): def stream_data(self):
yield self._data yield self._data
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment