diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index f00a22782c..7aa904205d 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -99,7 +99,14 @@ class CourseDescriptor(SequenceDescriptor): def definition_from_xml(cls, xml_object, system): textbooks = [] for textbook in xml_object.findall("textbook"): - textbooks.append(cls.Textbook.from_xml_object(textbook)) + try: + txt = cls.Textbook.from_xml_object(textbook) + except: + # If we can't get to S3 (e.g. on a train with no internet), don't break + # the rest of the courseware. + log.exception("Couldn't load textbook") + continue + textbooks.append(txt) xml_object.remove(textbook) #Load the wiki tag if it exists diff --git a/lms/djangoapps/courseware/tests/tests.py b/lms/djangoapps/courseware/tests/tests.py index 62456d65d5..f3b086748d 100644 --- a/lms/djangoapps/courseware/tests/tests.py +++ b/lms/djangoapps/courseware/tests/tests.py @@ -222,16 +222,9 @@ class PageLoader(ActivateLoginTestCase): handling. """ resp = self.client.get(url) - # HACK: workaround the bug that returns 200 instead of 404. - # TODO (vshnayder): once we're returning 404s, get rid of this if. - if code != 404: - self.assertEqual(resp.status_code, code) - # And 'page not found' shouldn't be in the returned page - self.assertTrue(resp.content.lower().find('page not found') == -1) - else: - # look for "page not found" instead of the status code - #print resp.content - self.assertTrue(resp.content.lower().find('page not found') != -1) + self.assertEqual(resp.status_code, code, + "got code {0} for url '{1}'. Expected code {2}" + .format(resp.status_code, url, code)) def check_pages_load(self, course_name, data_dir, modstore): diff --git a/lms/djangoapps/static_template_view/views.py b/lms/djangoapps/static_template_view/views.py index 90087e06d6..8ab6216eda 100644 --- a/lms/djangoapps/static_template_view/views.py +++ b/lms/djangoapps/static_template_view/views.py @@ -6,6 +6,7 @@ from mitxmako.shortcuts import render_to_response, render_to_string from django.shortcuts import redirect from django.conf import settings +from django.http import HttpResponseNotFound, HttpResponseServerError from django_future.csrf import ensure_csrf_cookie from util.cache import cache_if_anonymous @@ -40,9 +41,9 @@ def render(request, template): def render_404(request): - return render_to_response('static_templates/404.html', {}) + return HttpResponseNotFound(render_to_string('static_templates/404.html', {})) def render_500(request): - return render_to_response('static_templates/server-error.html', {}) + return HttpResponseServerError(render_to_string('static_templates/server-error.html', {})) diff --git a/rakefile b/rakefile index 053abf56a8..9e0bbcbfa4 100644 --- a/rakefile +++ b/rakefile @@ -227,3 +227,13 @@ namespace :cms do end end end + +desc "Build a properties file used to trigger autodeploy builds" +task :autodeploy_properties do + File.open("autodeploy.properties", "w") do |file| + file.puts("UPSTREAM_NOOP=false") + file.puts("UPSTREAM_BRANCH=#{BRANCH}") + file.puts("UPSTREAM_JOB=#{PACKAGE_NAME}") + file.puts("UPSTREAM_REVISION=#{COMMIT}") + end +end