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