From cb92bd13aee0d17a5f5d373797195198431a52e0 Mon Sep 17 00:00:00 2001
From: Waheed Ahmed <waheed.ahmed@arbisoft.com>
Date: Mon, 27 Jan 2020 16:52:29 +0500
Subject: [PATCH] Fix PDF certificate link on progress page.

Need to pass certificate status incase `DISABLE_HONOR_CERTIFICATES`
feature flag is ON.

PROD-60
---
 .../ccx/tests/test_field_override_performance.py     |  4 ++--
 lms/djangoapps/courseware/tests/test_views.py        | 12 +++++++-----
 lms/djangoapps/courseware/views/views.py             |  4 ++--
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/lms/djangoapps/ccx/tests/test_field_override_performance.py b/lms/djangoapps/ccx/tests/test_field_override_performance.py
index 4cd9db66a95..c507dbd7588 100644
--- a/lms/djangoapps/ccx/tests/test_field_override_performance.py
+++ b/lms/djangoapps/ccx/tests/test_field_override_performance.py
@@ -244,7 +244,7 @@ class TestFieldOverrideMongoPerformance(FieldOverridePerformanceTestCase):
     __test__ = True
 
     # TODO: decrease query count as part of REVO-28
-    QUERY_COUNT = 29
+    QUERY_COUNT = 33
     TEST_DATA = {
         # (providers, course_width, enable_ccx, view_as_ccx): (
         #     # of sql queries to default,
@@ -273,7 +273,7 @@ class TestFieldOverrideSplitPerformance(FieldOverridePerformanceTestCase):
     __test__ = True
 
     # TODO: decrease query count as part of REVO-28
-    QUERY_COUNT = 29
+    QUERY_COUNT = 33
 
     TEST_DATA = {
         ('no_overrides', 1, True, False): (QUERY_COUNT, 3),
diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py
index bc27d5efe21..92108ef0cc9 100644
--- a/lms/djangoapps/courseware/tests/test_views.py
+++ b/lms/djangoapps/courseware/tests/test_views.py
@@ -1492,8 +1492,8 @@ class ProgressPageTests(ProgressPageBaseTests):
             self.assertContains(resp, u"Download Your Certificate")
 
     @ddt.data(
-        (True, 51),
-        (False, 50)
+        (True, 54),
+        (False, 53)
     )
     @ddt.unpack
     def test_progress_queries_paced_courses(self, self_paced, query_count):
@@ -1506,8 +1506,8 @@ class ProgressPageTests(ProgressPageBaseTests):
 
     @patch.dict(settings.FEATURES, {'ASSUME_ZERO_GRADE_IF_ABSENT_FOR_ALL_TESTS': False})
     @ddt.data(
-        (False, 59, 38),
-        (True, 50, 33)
+        (False, 62, 41),
+        (True, 53, 36)
     )
     @ddt.unpack
     def test_progress_queries(self, enable_waffle, initial, subsequent):
@@ -1768,9 +1768,11 @@ class ProgressPageTests(ProgressPageBaseTests):
         self.assertEqual(response.cert_status, 'invalidated')
         self.assertEqual(response.title, 'Your certificate has been invalidated')
 
+    @override_settings(FEATURES=FEATURES_WITH_DISABLE_HONOR_CERTIFICATE)
     def test_downloadable_get_cert_data(self):
         """
-        Verify that downloadable cert data is returned if cert is downloadable.
+        Verify that downloadable cert data is returned if cert is downloadable even
+        when DISABLE_HONOR_CERTIFICATES feature flag is turned ON.
         """
         self.generate_certificate(
             "http://www.example.com/certificate.pdf", "honor"
diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py
index c7b7d8d79a5..53915d69bd0 100644
--- a/lms/djangoapps/courseware/views/views.py
+++ b/lms/djangoapps/courseware/views/views.py
@@ -1179,7 +1179,8 @@ def _get_cert_data(student, course, enrollment_mode, course_grade=None):
     Returns:
         returns dict if course certificate is available else None.
     """
-    if not CourseMode.is_eligible_for_certificate(enrollment_mode):
+    cert_data = _certificate_message(student, course, enrollment_mode)
+    if not CourseMode.is_eligible_for_certificate(enrollment_mode, status=cert_data.cert_status):
         return INELIGIBLE_PASSING_CERT_DATA.get(enrollment_mode)
 
     certificates_enabled_for_course = certs_api.cert_generation_enabled(course.id)
@@ -1189,7 +1190,6 @@ def _get_cert_data(student, course, enrollment_mode, course_grade=None):
     if not auto_certs_api.can_show_certificate_message(course, student, course_grade, certificates_enabled_for_course):
         return
 
-    cert_data = _certificate_message(student, course, enrollment_mode)
     if not certs_api.get_active_web_certificate(course) and not auto_certs_api.is_valid_pdf_certificate(cert_data):
         return
 
-- 
GitLab