def get_queryset(self): api_version = self.kwargs.get('api_version') enrollments = self.queryset.filter( user__username=self.kwargs['username'], is_active=True).order_by('created').reverse() org = self.request.query_params.get('org', None) if api_version == API_V05: # for v0.5 don't return expired courses 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) and not self.hide_course_for_enrollment_fee_experiment( self.request.user, enrollment) and ( not CONTENT_TYPE_GATING_FLAG.is_enabled() or check_course_expired(self.request.user, enrollment. course) == ACCESS_GRANTED) ] else: # return all courses, with associated expiration 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) ]
def get_queryset(self): api_version = self.kwargs.get('api_version') enrollments = self.queryset.filter( user__username=self.kwargs['username'], is_active=True ).order_by('created').reverse() org = self.request.query_params.get('org', None) same_org = ( enrollment for enrollment in enrollments if enrollment.course_overview and self.is_org(org, enrollment.course_overview.org) ) mobile_available = ( enrollment for enrollment in same_org if is_mobile_available_for_user(self.request.user, enrollment.course_overview) ) not_hidden_for_experiments = ( enrollment for enrollment in mobile_available if not self.hide_course_for_enrollment_fee_experiment(self.request.user, enrollment) ) not_duration_limited = ( enrollment for enrollment in not_hidden_for_experiments if check_course_expired(self.request.user, enrollment.course) == ACCESS_GRANTED ) if api_version == API_V05: # for v0.5 don't return expired courses return list(not_duration_limited) else: # return all courses, with associated expiration return list(mobile_available)
def get_queryset(self): CREATED = 'created' CREATED_REVERSE = 'created_reverse' COURSE_NAME = 'course_name' COURSE_NAME_REVERSE = 'course_name_reverse' queryset_options = { CREATED: self.queryset_order_by_created, CREATED_REVERSE: self.queryset_order_by_created_reverse, COURSE_NAME: self.queryset_order_by_course_name, COURSE_NAME_REVERSE: self.queryset_order_by_course_name_reverse } partial_queryset =\ self.queryset.filter( user__username=self.kwargs['username'], is_active=True ) order_by =\ configuration_helpers.get_value( 'USER_COURSE_ENROLLMENTS_ORDER_BY', settings.USER_COURSE_ENROLLMENTS_ORDER_BY ) enrollments = queryset_options[order_by](partial_queryset) org = self.request.query_params.get('org', None) orgs = configuration_helpers.get_all_orgs() return [ enrollment for enrollment in enrollments if enrollment.course_overview and self.is_org(org, enrollment.course_overview.org) and (org or enrollment.course_overview.org not in orgs) and is_mobile_available_for_user(self.request.user, enrollment.course_overview) ]
def get(self, request, username): """ Returns a list of courses enrolled by user. """ queryset = CourseEnrollment.objects.all() course_ids = set(queryset.values_list('course_id', flat=True)) catalog_course_runs_against_course_keys = get_course_runs(course_ids, request.user) enrollments = queryset.filter( user__username=username, is_active=True ).order_by('created').reverse() org = request.query_params.get('org', None) return Response([ CourseEnrollmentSerializer( enrollment, context={ "request": request, "catalog_course_run": ( catalog_course_runs_against_course_keys[unicode(enrollment.course_id)] if unicode(enrollment.course_id) in catalog_course_runs_against_course_keys else None ) } ).data for enrollment in enrollments if enrollment.course_overview and self.is_org(org, enrollment.course_overview.org) and is_mobile_available_for_user(request.user, enrollment.course_overview) ])
def list(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.GET, files=request.FILES) if not serializer.is_valid(): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) # Get friends from Facebook result = get_friends_from_facebook(serializer) if not isinstance(result, list): return result friends_that_are_edx_users = get_linked_edx_accounts(result) # Filter by sharing preferences users_with_sharing = [ friend for friend in friends_that_are_edx_users if share_with_facebook_friends(friend) ] # Get unique enrollments enrollments = [] for friend in users_with_sharing: query_set = CourseEnrollment.objects.filter( user_id=friend['edX_id'] ).exclude(course_id__in=[enrollment.course_id for enrollment in enrollments]) enrollments.extend(query_set) # Get course objects courses = [ enrollment for enrollment in enrollments if enrollment.course and is_mobile_available_for_user(self.request.user, enrollment.course) ] return Response(CourseEnrollmentSerializer(courses, context={'request': request}).data)
def get_queryset(self): api_version = self.kwargs.get('api_version') enrollments = self.queryset.filter( user__username=self.kwargs['username'], is_active=True).order_by('created').reverse() org = self.request.query_params.get('org', None) same_org = (enrollment for enrollment in enrollments if enrollment.course_overview and self.is_org(org, enrollment.course_overview.org)) mobile_available = (enrollment for enrollment in same_org if is_mobile_available_for_user( self.request.user, enrollment.course_overview)) not_hidden_for_experiments = ( enrollment for enrollment in mobile_available if not self.hide_course_for_enrollment_fee_experiment( self.request.user, enrollment)) not_duration_limited = ( enrollment for enrollment in not_hidden_for_experiments if check_course_expired(self.request.user, enrollment.course) == ACCESS_GRANTED) if api_version == API_V05: # for v0.5 don't return expired courses return list(not_duration_limited) else: # return all courses, with associated expiration return list(mobile_available)
def get_queryset(self): enrollments = self.queryset.filter( user__username=self.kwargs['username'], is_active=True ).order_by('created').reverse() return [ enrollment for enrollment in enrollments if enrollment.course and is_mobile_available_for_user(self.request.user, enrollment.course) ]
def get_queryset(self): enrollments = self.queryset.filter( user__username=self.kwargs['username'], is_active=True ).order_by('created').reverse() return [ enrollment for enrollment in enrollments if enrollment.course and is_mobile_available_for_user(self.request.user, enrollment.course) ]
def get_queryset(self): enrollments = self.queryset.filter( user__username=self.kwargs['username'], is_active=True ).order_by('created').reverse() org = self.request.query_params.get('org', None) 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) ]
def get_queryset(self): enrollments = self.queryset.filter( user__username=self.kwargs['username'], is_active=True ).order_by('created').reverse() org = self.request.query_params.get('org', None) 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) ]