From 6fe063821414d3f4021a23000cb69702a1dfe8ae Mon Sep 17 00:00:00 2001 From: aamir-khan <aamir@edx.org> Date: Thu, 10 Mar 2016 17:03:43 +0500 Subject: [PATCH] Remove the certificate generation button from progress page for audit student --- lms/djangoapps/courseware/tests/test_views.py | 25 +++++++++++++++++-- lms/djangoapps/courseware/views.py | 6 ++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index 49459f94086..94f6b2d3260 100755 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -857,7 +857,7 @@ class ProgressPageTests(ModuleStoreTestCase): ) self.course = modulestore().get_course(course.id) - CourseEnrollmentFactory(user=self.user, course_id=self.course.id) + CourseEnrollmentFactory(user=self.user, course_id=self.course.id, mode=CourseMode.HONOR) self.chapter = ItemFactory.create(category='chapter', parent_location=self.course.location) self.section = ItemFactory.create(category='sequential', parent_location=self.chapter.location) @@ -1044,7 +1044,7 @@ class ProgressPageTests(ModuleStoreTestCase): self.assertContains(resp, u"Download Your Certificate") @ddt.data( - *itertools.product(((40, 4, True), (40, 4, False)), (True, False)) + *itertools.product(((41, 4, True), (41, 4, False)), (True, False)) ) @ddt.unpack def test_query_counts(self, (sql_calls, mongo_calls, self_paced), self_paced_enabled): @@ -1055,6 +1055,27 @@ class ProgressPageTests(ModuleStoreTestCase): resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertEqual(resp.status_code, 200) + @patch('courseware.grades.grade', Mock(return_value={ + 'grade': 'Pass', 'percent': 0.75, 'section_breakdown': [], 'grade_breakdown': [] + })) + @ddt.data( + (CourseMode.AUDIT, False), + (CourseMode.HONOR, True), + (CourseMode.VERIFIED, True), + (CourseMode.PROFESSIONAL, True), + (CourseMode.NO_ID_PROFESSIONAL_MODE, True), + (CourseMode.CREDIT_MODE, True), + ) + @ddt.unpack + def test_show_certificate_request_button(self, course_mode, show_button): + """Verify that the Request Certificate is not displayed in audit mode.""" + CertificateGenerationConfiguration(enabled=True).save() + certs_api.set_cert_generation_enabled(self.course.id, True) + CourseEnrollment.enroll(self.user, self.course.id, mode=course_mode) + + resp = views.progress(self.request, course_id=unicode(self.course.id)) + self.assertEqual(show_button, 'Request Certificate' in resp.content) + @attr('shard_1') class VerifyCourseKeyDecoratorTests(TestCase): diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index 98635c10183..8eae5117947 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -1043,7 +1043,11 @@ def _progress(request, course_key, student_id): raise Http404 # checking certificate generation configuration - show_generate_cert_btn = certs_api.cert_generation_enabled(course_key) + enrollment_mode, is_active = CourseEnrollment.enrollment_mode_for_user(student, course_key) + show_generate_cert_btn = ( + is_active and CourseMode.is_eligible_for_certificate(enrollment_mode) + and certs_api.cert_generation_enabled(course_key) + ) context = { 'course': course, -- GitLab