MA-776 change UserCourseEnrollmentsList endpoint to use course_overviews
This commit is contained in:
@@ -663,17 +663,19 @@ def _has_staff_access_to_descriptor(user, descriptor, course_key):
|
||||
return _has_staff_access_to_location(user, descriptor.location, course_key)
|
||||
|
||||
|
||||
def is_mobile_available_for_user(user, course):
|
||||
def is_mobile_available_for_user(user, descriptor):
|
||||
"""
|
||||
Returns whether the given course is mobile_available for the given user.
|
||||
Checks:
|
||||
mobile_available flag on the course
|
||||
Beta User and staff access overrides the mobile_available flag
|
||||
Arguments:
|
||||
descriptor (CourseDescriptor|CourseOverview): course or overview of course in question
|
||||
"""
|
||||
return (
|
||||
course.mobile_available or
|
||||
auth.has_access(user, CourseBetaTesterRole(course.id)) or
|
||||
_has_staff_access_to_descriptor(user, course, course.id)
|
||||
descriptor.mobile_available or
|
||||
auth.has_access(user, CourseBetaTesterRole(descriptor.id)) or
|
||||
_has_staff_access_to_descriptor(user, descriptor, descriptor.id)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -9,11 +9,11 @@ from student.models import CourseEnrollment, User
|
||||
from certificates.models import certificate_status_for_student, CertificateStatuses
|
||||
|
||||
|
||||
class CourseField(serializers.RelatedField):
|
||||
class CourseOverviewField(serializers.RelatedField):
|
||||
"""Custom field to wrap a CourseDescriptor object. Read-only."""
|
||||
|
||||
def to_native(self, course):
|
||||
course_id = unicode(course.id)
|
||||
def to_native(self, course_overview):
|
||||
course_id = unicode(course_overview.id)
|
||||
request = self.context.get('request', None)
|
||||
if request:
|
||||
video_outline_url = reverse(
|
||||
@@ -38,14 +38,14 @@ class CourseField(serializers.RelatedField):
|
||||
|
||||
return {
|
||||
"id": course_id,
|
||||
"name": course.display_name,
|
||||
"number": course.display_number_with_default,
|
||||
"org": course.display_org_with_default,
|
||||
"start": course.start,
|
||||
"end": course.end,
|
||||
"course_image": course_image_url(course),
|
||||
"name": course_overview.display_name,
|
||||
"number": course_overview.display_number_with_default,
|
||||
"org": course_overview.display_org_with_default,
|
||||
"start": course_overview.start,
|
||||
"end": course_overview.end,
|
||||
"course_image": course_overview.course_image_url,
|
||||
"social_urls": {
|
||||
"facebook": course.facebook_url,
|
||||
"facebook": course_overview.facebook_url,
|
||||
},
|
||||
"latest_updates": {
|
||||
"video": None
|
||||
@@ -53,7 +53,7 @@ class CourseField(serializers.RelatedField):
|
||||
"video_outline": video_outline_url,
|
||||
"course_updates": course_updates_url,
|
||||
"course_handouts": course_handouts_url,
|
||||
"subscription_id": course.clean_id(padding_char='_'),
|
||||
"subscription_id": course_overview.clean_id(padding_char='_'),
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ class CourseEnrollmentSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Serializes CourseEnrollment models
|
||||
"""
|
||||
course = CourseField()
|
||||
course = CourseOverviewField(source="course_overview")
|
||||
certificate = serializers.SerializerMethodField('get_certificate')
|
||||
|
||||
def get_certificate(self, model):
|
||||
|
||||
@@ -241,7 +241,8 @@ class UserCourseEnrollmentsList(generics.ListAPIView):
|
||||
).order_by('created').reverse()
|
||||
return [
|
||||
enrollment for enrollment in enrollments
|
||||
if enrollment.course and is_mobile_available_for_user(self.request.user, enrollment.course)
|
||||
if enrollment.course_overview and
|
||||
is_mobile_available_for_user(self.request.user, enrollment.course_overview)
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user