diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index c0a6c51636..56b98ebf73 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -12,6 +12,7 @@ from urlparse import parse_qs, urlsplit, urlunsplit import analytics import edx_oauth2_provider +import waffle from django.conf import settings from django.contrib import messages from django.contrib.auth import authenticate, login, logout @@ -174,6 +175,7 @@ def index(request, extra_context=None, user=AnonymousUser()): if extra_context is None: extra_context = {} + programs_list = [] courses = get_courses(user) if configuration_helpers.get_value( @@ -207,7 +209,11 @@ def index(request, extra_context=None, user=AnonymousUser()): # Insert additional context for use in the template context.update(extra_context) - context['programs_list'] = get_programs_with_type(include_hidden=False) + # Add marketable programs to the context if the multi-tenant programs switch is enabled. + if waffle.switch_is_active('get-multitenant-programs'): + programs_list = get_programs_with_type(include_hidden=False) + + context['programs_list'] = programs_list return render_to_response('index.html', context) diff --git a/lms/djangoapps/branding/tests/test_page.py b/lms/djangoapps/branding/tests/test_page.py index 70edf1afea..e6af34da06 100644 --- a/lms/djangoapps/branding/tests/test_page.py +++ b/lms/djangoapps/branding/tests/test_page.py @@ -14,6 +14,7 @@ from milestones.tests.utils import MilestonesTestCaseMixin from mock import Mock, patch from nose.plugins.attrib import attr from pytz import UTC +from waffle.testutils import override_switch from branding.views import index from courseware.tests.helpers import LoginEnrollmentTestCase @@ -297,18 +298,19 @@ class IndexPageProgramsTests(SiteMixin, ModuleStoreTestCase): """ Tests for Programs List in Marketing Pages. """ - @ddt.data([], ['fake_program_type']) - def test_get_programs_with_type_called(self, program_types): + @ddt.data(True, False) + def test_get_programs_with_type_called(self, multitenant_programs_enabled): views = [ (reverse('root'), 'student.views.get_programs_with_type'), (reverse('branding.views.courses'), 'courseware.views.views.get_programs_with_type'), ] for url, dotted_path in views: with patch(dotted_path) as mock_get_programs_with_type: - response = self.client.get(url) - self.assertEqual(response.status_code, 200) + with override_switch('get-multitenant-programs', multitenant_programs_enabled): + response = self.client.get(url) + self.assertEqual(response.status_code, 200) - if program_types: - mock_get_programs_with_type.assert_called_once() - else: - mock_get_programs_with_type.assert_not_called() + if multitenant_programs_enabled: + mock_get_programs_with_type.assert_called_once() + else: + mock_get_programs_with_type.assert_not_called() diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index a05217ee6f..7d7917d205 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -8,6 +8,7 @@ from collections import OrderedDict, namedtuple from datetime import datetime, timedelta import analytics +import waffle from django.conf import settings from django.contrib.auth.decorators import login_required from django.contrib.auth.models import AnonymousUser, User @@ -155,7 +156,9 @@ def courses(request): else: courses_list = sort_by_announcement(courses_list) - programs_list = get_programs_with_type(include_hidden=False) + # Add marketable programs to the context if the multi-tenant programs switch is enabled. + if waffle.switch_is_active('get-multitenant-programs'): + programs_list = get_programs_with_type(include_hidden=False) return render_to_response( "courseware/courses.html",