Hide experiment courses from dashboard if enrolled but not paid

This commit is contained in:
Matthew Piatetsky
2018-04-05 16:09:37 -04:00
parent 063118cf0e
commit 7673ea06b1

View File

@@ -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)
]