From 7673ea06b13d04b646d9b99e926ba2fa39bb5b27 Mon Sep 17 00:00:00 2001 From: Matthew Piatetsky Date: Thu, 5 Apr 2018 16:09:37 -0400 Subject: [PATCH] Hide experiment courses from dashboard if enrolled but not paid --- lms/djangoapps/mobile_api/users/views.py | 28 +++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/mobile_api/users/views.py b/lms/djangoapps/mobile_api/users/views.py index 6a5a8b9be1..d41f1fe39f 100644 --- a/lms/djangoapps/mobile_api/users/views.py +++ b/lms/djangoapps/mobile_api/users/views.py @@ -17,6 +17,7 @@ from courseware.courses import get_current_child from courseware.model_data import FieldDataCache from courseware.module_render import get_module_for_descriptor from courseware.views.index import save_positions_recursively_up +from experiments.models import ExperimentData from student.models import CourseEnrollment, User from xmodule.modulestore.django import modulestore from xmodule.modulestore.exceptions import ItemNotFoundError @@ -273,6 +274,30 @@ class UserCourseEnrollmentsList(generics.ListAPIView): """ return check_org is None or (check_org.lower() == course_org.lower()) + def hide_course_for_enrollment_fee_experiment(self, user, course_key, experiment_id=9): + """ + Hide enrolled courses from mobile app as part of REV-73/REV-19 + """ + try: + ExperimentData.objects.get( + user=user, + experiment_id=experiment_id, + key='enrolled_{0}'.format(course_key), + ) + except ExperimentData.DoesNotExist: + return False + + try: + ExperimentData.objects.get( + user=user, + experiment_id=experiment_id, + key='paid_{0}'.format(course_key), + ) + except ExperimentData.DoesNotExist: + return True + + return False + def get_queryset(self): enrollments = self.queryset.filter( user__username=self.kwargs['username'], @@ -282,7 +307,8 @@ class UserCourseEnrollmentsList(generics.ListAPIView): return [ enrollment for enrollment in enrollments if enrollment.course_overview and self.is_org(org, enrollment.course_overview.org) and - is_mobile_available_for_user(self.request.user, enrollment.course_overview) + is_mobile_available_for_user(self.request.user, enrollment.course_overview) and + not self.hide_course_for_enrollment_fee_experiment(self.request.user, enrollment.course_overview.id) ]