diff --git a/common/djangoapps/static_replace.py b/common/djangoapps/static_replace.py index 70031cc754..f9660e7f5e 100644 --- a/common/djangoapps/static_replace.py +++ b/common/djangoapps/static_replace.py @@ -9,8 +9,11 @@ def replace(static_url, prefix=None): prefix = prefix + '/' quote = static_url.group('quote') - url = staticfiles_storage.url(prefix + static_url.group('rest')) - return "".join([quote, url, quote]) + if staticfiles_storage.exists(static_url.group('rest')): + return static_url.group(0) + else: + url = staticfiles_storage.url(prefix + static_url.group('rest')) + return "".join([quote, url, quote]) def replace_urls(text, staticfiles_prefix=None, replace_prefix='/static/'): @@ -18,9 +21,9 @@ def replace_urls(text, staticfiles_prefix=None, replace_prefix='/static/'): return replace(static_url, staticfiles_prefix) return re.sub(r""" - (?x) # flags=re.VERBOSE - (?P\\?['"]) # the opening quotes - {prefix} # the prefix - (?P.*?) # everything else in the url - (?P=quote) # the first matching closing quote + (?x) # flags=re.VERBOSE + (?P\\?['"]) # the opening quotes + (?P{prefix}) # the prefix + (?P.*?) # everything else in the url + (?P=quote) # the first matching closing quote """.format(prefix=replace_prefix), replace_url, text) diff --git a/common/lib/xmodule/xmodule/xml_module.py b/common/lib/xmodule/xmodule/xml_module.py index b0bfaebab5..ce41ff68bc 100644 --- a/common/lib/xmodule/xmodule/xml_module.py +++ b/common/lib/xmodule/xmodule/xml_module.py @@ -172,12 +172,8 @@ class XmlDescriptor(XModuleDescriptor): log.debug('filepath=%s, resources_fs=%s' % (filepath, system.resources_fs)) try: with system.resources_fs.open(filepath) as file: - try: - definition_xml = cls.file_to_xml(file) - except: - log.exception("Failed to parse xml in file %s" % filepath) - raise - except ResourceNotFoundError: + definition_xml = cls.file_to_xml(file) + except (ResourceNotFoundError, etree.XMLSyntaxError): log.exception('Unable to load file contents at path %s' % filepath) return {'data': 'Error loading file contents at path %s' % filepath} diff --git a/lms/envs/common.py b/lms/envs/common.py index dc748f8482..4e81afe870 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -184,7 +184,7 @@ if os.path.isdir(DATA_DIR): # should no longer be added to STATICFILES (course_dir, DATA_DIR / course_dir) for course_dir in os.listdir(DATA_DIR) - if os.path.isdir(course_dir) + if os.path.isdir(DATA_DIR / course_dir) ] # Locale/Internationalization diff --git a/lms/static/sass/sass_old/courseware/_sequence-nav.scss b/lms/static/sass/sass_old/courseware/_sequence-nav.scss index 564cbaae9d..4472724e6d 100644 --- a/lms/static/sass/sass_old/courseware/_sequence-nav.scss +++ b/lms/static/sass/sass_old/courseware/_sequence-nav.scss @@ -89,57 +89,57 @@ nav.sequence-nav { //video &.seq_video_inactive { @extend .inactive; - background-image: url('../../images/sequence-nav/video-icon-normal.png'); + background-image: url('../images/sequence-nav/video-icon-normal.png'); background-position: center; } &.seq_video_visited { @extend .visited; - background-image: url('../../images/sequence-nav/video-icon-visited.png'); + background-image: url('../images/sequence-nav/video-icon-visited.png'); background-position: center; } &.seq_video_active { @extend .active; - background-image: url('../../images/sequence-nav/video-icon-current.png'); + background-image: url('../images/sequence-nav/video-icon-current.png'); background-position: center; } //other &.seq_other_inactive { @extend .inactive; - background-image: url('../../images/sequence-nav/document-icon-normal.png'); + background-image: url('../images/sequence-nav/document-icon-normal.png'); background-position: center; } &.seq_other_visited { @extend .visited; - background-image: url('../../images/sequence-nav/document-icon-visited.png'); + background-image: url('../images/sequence-nav/document-icon-visited.png'); background-position: center; } &.seq_other_active { @extend .active; - background-image: url('../../images/sequence-nav/document-icon-current.png'); + background-image: url('../images/sequence-nav/document-icon-current.png'); background-position: center; } //vertical & problems &.seq_vertical_inactive, &.seq_problem_inactive { @extend .inactive; - background-image: url('../../images/sequence-nav/list-icon-normal.png'); + background-image: url('../images/sequence-nav/list-icon-normal.png'); background-position: center; } &.seq_vertical_visited, &.seq_problem_visited { @extend .visited; - background-image: url('../../images/sequence-nav/list-icon-visited.png'); + background-image: url('../images/sequence-nav/list-icon-visited.png'); background-position: center; } &.seq_vertical_active, &.seq_problem_active { @extend .active; - background-image: url('../../images/sequence-nav/list-icon-current.png'); + background-image: url('../images/sequence-nav/list-icon-current.png'); background-position: center; } @@ -229,7 +229,7 @@ nav.sequence-nav { &.prev { a { - background-image: url('../../images/sequence-nav/previous-icon.png'); + background-image: url('../images/sequence-nav/previous-icon.png'); &:hover { background-color: $cream; @@ -239,7 +239,7 @@ nav.sequence-nav { &.next { a { - background-image: url('../../images/sequence-nav/next-icon.png'); + background-image: url('../images/sequence-nav/next-icon.png'); &:hover { background-color: $cream; @@ -310,7 +310,7 @@ section.course-content { &.prev { a { - background-image: url('../../images/sequence-nav/previous-icon.png'); + background-image: url('../images/sequence-nav/previous-icon.png'); border-right: 1px solid darken(#f6efd4, 20%); &:hover { @@ -321,7 +321,7 @@ section.course-content { &.next { a { - background-image: url('../../images/sequence-nav/next-icon.png'); + background-image: url('../images/sequence-nav/next-icon.png'); &:hover { background-color: none;