Commit 4984f9d8 by Calen Pennington

Use django-pipeline to read course static files.

Requires the replacement of {COURSE_STATIC_URL} with just /static/
in about/overview.html files.
parent 8613555c
<%! <%!
from staticfiles.storage import staticfiles_storage from staticfiles.storage import staticfiles_storage
from pipeline_mako import compressed_css, compressed_js from pipeline_mako import compressed_css, compressed_js
from static_replace import replace_urls
%> %>
<%def name='url(file)'>${staticfiles_storage.url(file)}</%def> <%def name='url(file)'>${staticfiles_storage.url(file)}</%def>
...@@ -24,5 +23,3 @@ from static_replace import replace_urls ...@@ -24,5 +23,3 @@ from static_replace import replace_urls
% endfor % endfor
%endif %endif
</%def> </%def>
<%def name='replace_urls(text)'>${replace_urls(text)}</%def>
...@@ -9,9 +9,12 @@ from django.http import Http404 ...@@ -9,9 +9,12 @@ from django.http import Http404
from xmodule.course_module import CourseDescriptor from xmodule.course_module import CourseDescriptor
from xmodule.modulestore.django import modulestore from xmodule.modulestore.django import modulestore
from xmodule.modulestore.exceptions import ItemNotFoundError from xmodule.modulestore.exceptions import ItemNotFoundError
from static_replace import replace_urls
from staticfiles.storage import staticfiles_storage
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
def check_course(course_id, course_must_be_open=True, course_required=True): def check_course(course_id, course_must_be_open=True, course_required=True):
""" """
Given a course_id, this returns the course object. By default, Given a course_id, this returns the course object. By default,
...@@ -39,14 +42,9 @@ def check_course(course_id, course_must_be_open=True, course_required=True): ...@@ -39,14 +42,9 @@ def check_course(course_id, course_must_be_open=True, course_required=True):
return course return course
### These methods look like they should be on the course_module object itself, but they rely
### on the lms. Maybe they should be added dynamically to the class?
def course_static_url(course):
return settings.STATIC_URL + "/" + course.metadata['data_dir'] + "/"
def course_image_url(course): def course_image_url(course):
return course_static_url(course) + "images/course_image.jpg" return staticfiles_storage.url(course.metadata['data_dir'] + "/images/course_image.jpg")
def get_course_about_section(course, section_key): def get_course_about_section(course, section_key):
""" """
...@@ -78,7 +76,7 @@ def get_course_about_section(course, section_key): ...@@ -78,7 +76,7 @@ def get_course_about_section(course, section_key):
'effort', 'end_date', 'prerequisites']: 'effort', 'end_date', 'prerequisites']:
try: try:
with course.system.resources_fs.open(path("about") / section_key + ".html") as htmlFile: with course.system.resources_fs.open(path("about") / section_key + ".html") as htmlFile:
return htmlFile.read().decode('utf-8').format(COURSE_STATIC_URL = course_static_url(course) ) return replace_urls(htmlFile.read().decode('utf-8'), course.metadata['data_dir'])
except ResourceNotFoundError: except ResourceNotFoundError:
log.warning("Missing about section {key} in course {url}".format(key=section_key, url=course.location.url())) log.warning("Missing about section {key} in course {url}".format(key=section_key, url=course.location.url()))
return None return None
......
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