From d13928559ab252d8a39911f039becaf8ed1056bb Mon Sep 17 00:00:00 2001 From: Noraiz Anwar Date: Tue, 29 Aug 2017 19:43:01 +0500 Subject: [PATCH] =?UTF-8?q?Revert=20"remove=20try/catch=20block=20and=20as?= =?UTF-8?q?sociated=20test=20for=20EDUCATOR-1134=20followin=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/lib/xmodule/xmodule/course_module.py | 11 ++++++++++- .../lib/xmodule/xmodule/tests/test_course_module.py | 11 +++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 0a02ad1f05..802f8f695d 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -1454,4 +1454,13 @@ class CourseSummary(object): """ Returns whether the course has ended. """ - return course_metadata_utils.has_course_ended(self.end) + try: + return course_metadata_utils.has_course_ended(self.end) + except TypeError as e: + log.warning( + "Course '{course_id}' has an improperly formatted end date '{end_date}'. Error: '{err}'.".format( + course_id=unicode(self.id), end_date=self.end, err=e + ) + ) + modified_end = self.end.replace(tzinfo=utc) + return course_metadata_utils.has_course_ended(modified_end) diff --git a/common/lib/xmodule/xmodule/tests/test_course_module.py b/common/lib/xmodule/xmodule/tests/test_course_module.py index aa7d72d702..94c97097a7 100644 --- a/common/lib/xmodule/xmodule/tests/test_course_module.py +++ b/common/lib/xmodule/xmodule/tests/test_course_module.py @@ -2,6 +2,7 @@ import ddt import unittest from datetime import datetime, timedelta +from dateutil import parser import itertools from fs.memoryfs import MemoryFS @@ -142,6 +143,16 @@ class HasEndedMayCertifyTestCase(unittest.TestCase): self.assertFalse(self.future_noshow_certs.may_certify()) +class CourseSummaryHasEnded(unittest.TestCase): + """ Test for has_ended method when end date is missing timezone information. """ + + def test_course_end(self): + test_course = get_dummy_course("2012-01-01T12:00") + bad_end_date = parser.parse("2012-02-21 10:28:45") + summary = xmodule.course_module.CourseSummary(test_course.id, end=bad_end_date) + self.assertTrue(summary.has_ended()) + + @ddt.ddt class IsNewCourseTestCase(unittest.TestCase): """Make sure the property is_new works on courses"""