feat: create new waffle flag for learner home recommendations [VAN-1138] (#31225)

This commit is contained in:
Syed Sajjad Hussain Shah
2022-10-31 10:58:02 +05:00
committed by GitHub
parent 4c0b0f99a0
commit 02568f94dc
3 changed files with 30 additions and 8 deletions

View File

@@ -18,7 +18,6 @@ from rest_framework.test import APITestCase
from common.djangoapps.course_modes.models import CourseMode
from common.djangoapps.entitlements.tests.factories import CourseEntitlementFactory
from common.djangoapps.student.toggles import ENABLE_AMPLITUDE_RECOMMENDATIONS
from common.djangoapps.student.tests.factories import (
CourseEnrollmentFactory,
UserFactory,
@@ -40,6 +39,7 @@ from lms.djangoapps.learner_home.views import (
get_course_share_urls,
)
from lms.djangoapps.learner_home.test_serializers import random_url
from lms.djangoapps.learner_home.waffle import ENABLE_LEARNER_HOME_AMPLITUDE_RECOMMENDATIONS
from openedx.core.djangoapps.catalog.tests.factories import (
CourseRunFactory as CatalogCourseRunFactory,
ProgramFactory,
@@ -841,7 +841,7 @@ class TestCourseRecommendationApiView(SharedModuleStoreTestCase):
'marketing_url': 'https://www.marketing_url.com'
}
@override_waffle_flag(ENABLE_AMPLITUDE_RECOMMENDATIONS, active=False)
@override_waffle_flag(ENABLE_LEARNER_HOME_AMPLITUDE_RECOMMENDATIONS, active=False)
def test_waffle_flag_off(self):
"""
Verify API returns 400 if waffle flag is off.
@@ -850,7 +850,7 @@ class TestCourseRecommendationApiView(SharedModuleStoreTestCase):
self.assertEqual(response.status_code, 400)
self.assertEqual(response.data, None)
@override_waffle_flag(ENABLE_AMPLITUDE_RECOMMENDATIONS, active=True)
@override_waffle_flag(ENABLE_LEARNER_HOME_AMPLITUDE_RECOMMENDATIONS, active=True)
@mock.patch('lms.djangoapps.learner_home.views.get_personalized_course_recommendations')
@mock.patch('lms.djangoapps.learner_home.views.get_course_data')
def test_no_recommendations_from_amplitude(self, mocked_get_course_data,
@@ -865,7 +865,7 @@ class TestCourseRecommendationApiView(SharedModuleStoreTestCase):
self.assertEqual(response.status_code, 400)
self.assertEqual(response.data, None)
@override_waffle_flag(ENABLE_AMPLITUDE_RECOMMENDATIONS, active=True)
@override_waffle_flag(ENABLE_LEARNER_HOME_AMPLITUDE_RECOMMENDATIONS, active=True)
@mock.patch('lms.djangoapps.learner_home.views.get_personalized_course_recommendations')
@mock.patch('lms.djangoapps.learner_home.views.get_course_data')
def test_get_course_recommendations(self, mocked_get_course_data,
@@ -882,7 +882,7 @@ class TestCourseRecommendationApiView(SharedModuleStoreTestCase):
self.assertEqual(response.data.get('is_personalized_recommendation'), True)
self.assertEqual(len(response.data.get('courses')), expected_recommendations_length)
@override_waffle_flag(ENABLE_AMPLITUDE_RECOMMENDATIONS, active=True)
@override_waffle_flag(ENABLE_LEARNER_HOME_AMPLITUDE_RECOMMENDATIONS, active=True)
@mock.patch('lms.djangoapps.learner_home.views.get_personalized_course_recommendations')
@mock.patch('lms.djangoapps.learner_home.views.get_course_data')
def test_get_enrollable_course_recommendations(self, mocked_get_course_data,

View File

@@ -34,7 +34,6 @@ from common.djangoapps.student.models import (
CourseEnrollment,
get_user_by_username_or_email,
)
from common.djangoapps.student.toggles import should_show_amplitude_recommendations
from common.djangoapps.student.views.dashboard import (
complete_course_mode_info,
get_course_enrollments,
@@ -53,6 +52,7 @@ from lms.djangoapps.courseware.access_utils import (
check_course_open_for_learner,
)
from lms.djangoapps.learner_home.serializers import LearnerDashboardSerializer
from lms.djangoapps.learner_home.waffle import should_show_learner_home_amplitude_recommendations
from lms.djangoapps.learner_home.utils import (
get_personalized_course_recommendations,
exec_time_logged,
@@ -537,7 +537,7 @@ class CourseRecommendationApiView(APIView):
def get(self, request):
""" Retrieves course recommendations details of a user in a specified course. """
if not should_show_amplitude_recommendations():
if not should_show_learner_home_amplitude_recommendations():
return Response(status=400)
user_id = request.user.id

View File

@@ -6,6 +6,9 @@ waffle switches for the teams app.
from edx_toggles.toggles import WaffleFlag
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
# Namespace for Learner Home MFE waffle flags.
WAFFLE_FLAG_NAMESPACE = "learner_home_mfe"
# .. toggle_name: learner_home_mfe.enabled
# .. toggle_implementation: WaffleFlag
# .. toggle_default: False
@@ -14,7 +17,7 @@ from openedx.core.djangoapps.site_configuration import helpers as configuration_
# .. toggle_creation_date: 2022-10-11
# .. toggle_tickets: AU-879
ENABLE_LEARNER_HOME_MFE = WaffleFlag(
"learner_home_mfe.enabled",
f"{WAFFLE_FLAG_NAMESPACE}.enabled",
__name__,
)
@@ -23,3 +26,22 @@ def should_redirect_to_learner_home_mfe():
return configuration_helpers.get_value(
"ENABLE_LEARNER_HOME_MFE", ENABLE_LEARNER_HOME_MFE.is_enabled()
)
# Waffle flag to enable to recommendation panel on learner home mfe
# .. toggle_name: learner_home_mfe.enable_learner_home_amplitude_recommendations
# .. toggle_implementation: WaffleFlag
# .. toggle_default: False
# .. toggle_description: Waffle flag to enable to recommendation panel on learner home mfe
# .. toggle_use_cases: temporary
# .. toggle_creation_date: 2022-10-28
# .. toggle_target_removal_date: None
# .. toggle_warning: None
# .. toggle_tickets: VAN-1138
ENABLE_LEARNER_HOME_AMPLITUDE_RECOMMENDATIONS = WaffleFlag(
f"{WAFFLE_FLAG_NAMESPACE}.enable_learner_home_amplitude_recommendations", __name__
)
def should_show_learner_home_amplitude_recommendations():
return ENABLE_LEARNER_HOME_AMPLITUDE_RECOMMENDATIONS.is_enabled()