From 2c984719e9ad72f60f7e5edd07f7f4802cd885ed Mon Sep 17 00:00:00 2001 From: Anthony Mangano Date: Tue, 19 Dec 2017 15:57:45 -0500 Subject: [PATCH] ensure enrollment_end is parsed to datetime prior to making comparisons --- common/djangoapps/student/tests/test_views.py | 24 +++++++++---------- common/djangoapps/student/views.py | 3 ++- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/common/djangoapps/student/tests/test_views.py b/common/djangoapps/student/tests/test_views.py index 0cbc643680..7a184e715c 100644 --- a/common/djangoapps/student/tests/test_views.py +++ b/common/djangoapps/student/tests/test_views.py @@ -361,7 +361,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin): mock_course_runs.return_value = [ { 'key': 'course-v1:FAKE+FA1-MA1.X+3T2017', - 'enrollment_end': self.TOMORROW, + 'enrollment_end': str(self.TOMORROW), 'pacing_type': 'instructor_paced', 'type': 'verified' } @@ -389,7 +389,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin): mock_course_runs.return_value = [ { 'key': 'course-v1:FAKE+FA1-MA1.X+3T2017', - 'enrollment_end': self.TOMORROW, + 'enrollment_end': str(self.TOMORROW), 'pacing_type': 'instructor_paced', 'type': 'verified' } @@ -416,8 +416,8 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin): course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=unicode(mocked_course_overview.id)) mock_course_runs.return_value = [ { - 'key': mocked_course_overview.id, - 'enrollment_end': mocked_course_overview.enrollment_end, + 'key': str(mocked_course_overview.id), + 'enrollment_end': str(mocked_course_overview.enrollment_end), 'pacing_type': 'self_paced', 'type': 'verified' } @@ -434,8 +434,8 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin): mock_course_key.return_value = mocked_course_overview.id mock_course_runs.return_value = [ { - 'key': mocked_course_overview.id, - 'enrollment_end': mocked_course_overview.enrollment_end, + 'key': str(mocked_course_overview.id), + 'enrollment_end': str(mocked_course_overview.enrollment_end), 'pacing_type': 'self_paced', 'type': 'verified' } @@ -451,8 +451,8 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin): mock_course_key.return_value = mocked_course_overview.id mock_course_runs.return_value = [ { - 'key': mocked_course_overview.id, - 'enrollment_end': mocked_course_overview.enrollment_end, + 'key': str(mocked_course_overview.id), + 'enrollment_end': None, 'pacing_type': 'self_paced', 'type': 'verified' } @@ -481,8 +481,8 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin): course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=unicode(mocked_course_overview.id)) mock_course_runs.return_value = [ { - 'key': mocked_course_overview.id, - 'enrollment_end': mocked_course_overview.enrollment_end, + 'key': str(mocked_course_overview.id), + 'enrollment_end': str(mocked_course_overview.enrollment_end), 'pacing_type': 'self_paced', 'type': 'verified' } @@ -517,8 +517,8 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin): course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=unicode(mocked_course_overview.id), created=self.THREE_YEARS_AGO) mock_course_runs.return_value = [ { - 'key': mocked_course_overview.id, - 'enrollment_end': mocked_course_overview.enrollment_end, + 'key': str(mocked_course_overview.id), + 'enrollment_end': str(mocked_course_overview.enrollment_end), 'pacing_type': 'self_paced', 'type': 'verified' } diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 5e3bf342fe..9bfa1a9858 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -3,6 +3,7 @@ Student Views """ import datetime +import dateutil import json import logging import uuid @@ -708,7 +709,7 @@ def dashboard(request): for course_run in course_runs_for_course: enrollment_end = course_run.get('enrollment_end') - if not enrollment_end or enrollment_end > datetime.datetime.now(UTC): + if not enrollment_end or (dateutil.parser.parse(enrollment_end) > datetime.datetime.now(UTC)): enrollable_course_runs.append(course_run) course_entitlement_available_sessions[str(course_entitlement.uuid)] = enrollable_course_runs