From 7b801c66ca8fc92b93337419800f439112fe97f4 Mon Sep 17 00:00:00 2001 From: Peter Fogg Date: Mon, 9 Nov 2015 14:43:53 -0500 Subject: [PATCH 1/2] Remove check for course home page improvements. --- lms/templates/courseware/info.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/templates/courseware/info.html b/lms/templates/courseware/info.html index e2770169a7..0b9b20f39c 100644 --- a/lms/templates/courseware/info.html +++ b/lms/templates/courseware/info.html @@ -61,7 +61,7 @@ $(document).ready(function(){ ${get_course_info_section(request, course, 'updates')}
- % if SelfPacedConfiguration.current().enable_course_home_improvements: + % if False:

${_("Important Course Dates")}

${get_course_date_summary(course, user)} % endif From eeb8c489221765bb8bac3c5d513fe33b598594f0 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Fri, 6 Nov 2015 10:49:37 -0500 Subject: [PATCH 2/2] Disable posting to LinkedIn feature for microsites until we can support multiple LinkedIn accounts --- .../student/tests/test_certificates.py | 64 +++++++++++++++++++ common/djangoapps/student/views.py | 5 +- .../certificates/tests/test_webview_views.py | 26 +++++++- lms/djangoapps/certificates/views/webview.py | 5 +- requirements/edx/github.txt | 2 +- 5 files changed, 98 insertions(+), 4 deletions(-) diff --git a/common/djangoapps/student/tests/test_certificates.py b/common/djangoapps/student/tests/test_certificates.py index af4a6db8f1..313f9b54f7 100644 --- a/common/djangoapps/student/tests/test_certificates.py +++ b/common/djangoapps/student/tests/test_certificates.py @@ -2,6 +2,7 @@ import unittest import ddt +import mock from django.conf import settings from django.core.urlresolvers import reverse @@ -15,9 +16,18 @@ from certificates.tests.factories import GeneratedCertificateFactory # pylint: from certificates.api import get_certificate_url # pylint: disable=import-error from course_modes.models import CourseMode +from student.models import LinkedInAddToProfileConfiguration + # pylint: disable=no-member +def _fake_is_request_in_microsite(): + """ + Mocked version of microsite helper method to always return true + """ + return True + + @ddt.ddt @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') class CertificateDisplayTest(ModuleStoreTestCase): @@ -98,6 +108,60 @@ class CertificateDisplayTest(ModuleStoreTestCase): self.assertContains(response, u'View Test_Certificate') self.assertContains(response, test_url) + def test_post_to_linkedin_invisibility(self): + """ + Verifies that the post certificate to linked button + does not appear by default (when config is not set) + """ + self._create_certificate('honor') + + # until we set up the configuration, the LinkedIn action + # button should not be visible + self._check_linkedin_visibility(False) + + def test_post_to_linkedin_visibility(self): + """ + Verifies that the post certificate to linked button appears + as expected + """ + self._create_certificate('honor') + + config = LinkedInAddToProfileConfiguration( + company_identifier='0_mC_o2MizqdtZEmkVXjH4eYwMj4DnkCWrZP_D9', + enabled=True + ) + config.save() + + # now we should see it + self._check_linkedin_visibility(True) + + @mock.patch("microsite_configuration.microsite.is_request_in_microsite", _fake_is_request_in_microsite) + def test_post_to_linkedin_microsite(self): + """ + Verifies behavior for microsites which disables the post to LinkedIn + feature (for now) + """ + self._create_certificate('honor') + + config = LinkedInAddToProfileConfiguration( + company_identifier='0_mC_o2MizqdtZEmkVXjH4eYwMj4DnkCWrZP_D9', + enabled=True + ) + config.save() + + # now we should not see it because we are in a microsite + self._check_linkedin_visibility(False) + + def _check_linkedin_visibility(self, is_visible): + """ + Performs assertions on the Dashboard + """ + response = self.client.get(reverse('dashboard')) + if is_visible: + self.assertContains(response, u'Add Certificate to LinkedIn Profile') + else: + self.assertNotContains(response, u'Add Certificate to LinkedIn Profile') + def _create_certificate(self, enrollment_mode): """Simulate that the user has a generated certificate. """ CourseEnrollmentFactory.create(user=self.user, course_id=self.course.id, mode=enrollment_mode) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 845968856e..8d5aecb42e 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -362,7 +362,10 @@ def _cert_info(user, course_overview, cert_status, course_mode): # pylint: disa # Clicking this button sends the user to LinkedIn where they # can add the certificate information to their profile. linkedin_config = LinkedInAddToProfileConfiguration.current() - if linkedin_config.enabled: + + # posting certificates to LinkedIn is not currently + # supported in microsites/White Labels + if linkedin_config.enabled and not microsite.is_request_in_microsite(): status_dict['linked_in_url'] = linkedin_config.add_to_profile_url( course_overview.id, course_overview.display_name, diff --git a/lms/djangoapps/certificates/tests/test_webview_views.py b/lms/djangoapps/certificates/tests/test_webview_views.py index 44dc9223ea..18727eb04e 100644 --- a/lms/djangoapps/certificates/tests/test_webview_views.py +++ b/lms/djangoapps/certificates/tests/test_webview_views.py @@ -3,6 +3,7 @@ import json import ddt +import mock from uuid import uuid4 from nose.plugins.attrib import attr from mock import patch @@ -49,6 +50,13 @@ FEATURES_WITH_CUSTOM_CERTS_ENABLED = { FEATURES_WITH_CUSTOM_CERTS_ENABLED.update(FEATURES_WITH_CERTS_ENABLED) +def _fake_is_request_in_microsite(): + """ + Mocked version of microsite helper method to always return true + """ + return True + + @attr('shard_1') @ddt.ddt class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase): @@ -161,7 +169,23 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase): course_id=unicode(self.course.id) ) response = self.client.get(test_url) - self.assertTrue(urllib.quote_plus(self.request.build_absolute_uri(test_url)) in response.content) + self.assertIn(urllib.quote_plus(self.request.build_absolute_uri(test_url)), response.content) + + @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) + @mock.patch("microsite_configuration.microsite.is_request_in_microsite", _fake_is_request_in_microsite) + def test_linkedin_share_microsites(self): + """ + Test: LinkedIn share URL should not be visible when called from within a microsite (for now) + """ + self._add_course_certificates(count=1, signatory_count=1, is_active=True) + test_url = get_certificate_url( + user_id=self.user.id, + course_id=unicode(self.course.id) + ) + response = self.client.get(test_url) + + # the URL should not be present + self.assertNotIn(urllib.quote_plus(self.request.build_absolute_uri(test_url)), response.content) @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) def test_rendering_course_organization_data(self): diff --git a/lms/djangoapps/certificates/views/webview.py b/lms/djangoapps/certificates/views/webview.py index e075e1378a..11465db16b 100644 --- a/lms/djangoapps/certificates/views/webview.py +++ b/lms/djangoapps/certificates/views/webview.py @@ -430,7 +430,10 @@ def render_html_view(request, user_id, course_id): # Clicking this button sends the user to LinkedIn where they # can add the certificate information to their profile. linkedin_config = LinkedInAddToProfileConfiguration.current() - if linkedin_config.enabled: + + # posting certificates to LinkedIn is not currently + # supported in microsites/White Labels + if linkedin_config.enabled and not microsite.is_request_in_microsite(): context['linked_in_url'] = linkedin_config.add_to_profile_url( course.id, course.display_name, diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index 4e96d22cb6..cee88b3c54 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -61,7 +61,7 @@ git+https://github.com/edx/edx-reverification-block.git@0.0.4#egg=edx-reverifica -e git+https://github.com/edx/edx-user-state-client.git@30c0ad4b9f57f8d48d6943eb585ec8a9205f4469#egg=edx-user-state-client git+https://github.com/edx/edx-organizations.git@release-2015-09-22#egg=edx-organizations==0.1.6 -git+https://github.com/edx/edx-proctoring.git@0.10.16#egg=edx-proctoring==0.10.16 +git+https://github.com/edx/edx-proctoring.git@0.10.20#egg=edx-proctoring==0.10.20 # Third Party XBlocks