Commit d84c3bd7 by Kyle McCormick

MA-776 change UserCourseEnrollmentsList endpoint to use course_overviews

parent 1726c136
...@@ -663,17 +663,19 @@ def _has_staff_access_to_descriptor(user, descriptor, course_key): ...@@ -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) 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. Returns whether the given course is mobile_available for the given user.
Checks: Checks:
mobile_available flag on the course mobile_available flag on the course
Beta User and staff access overrides the mobile_available flag Beta User and staff access overrides the mobile_available flag
Arguments:
descriptor (CourseDescriptor|CourseOverview): course or overview of course in question
""" """
return ( return (
course.mobile_available or descriptor.mobile_available or
auth.has_access(user, CourseBetaTesterRole(course.id)) or auth.has_access(user, CourseBetaTesterRole(descriptor.id)) or
_has_staff_access_to_descriptor(user, course, course.id) _has_staff_access_to_descriptor(user, descriptor, descriptor.id)
) )
......
...@@ -9,11 +9,11 @@ from student.models import CourseEnrollment, User ...@@ -9,11 +9,11 @@ from student.models import CourseEnrollment, User
from certificates.models import certificate_status_for_student, CertificateStatuses 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.""" """Custom field to wrap a CourseDescriptor object. Read-only."""
def to_native(self, course): def to_native(self, course_overview):
course_id = unicode(course.id) course_id = unicode(course_overview.id)
request = self.context.get('request', None) request = self.context.get('request', None)
if request: if request:
video_outline_url = reverse( video_outline_url = reverse(
...@@ -38,14 +38,14 @@ class CourseField(serializers.RelatedField): ...@@ -38,14 +38,14 @@ class CourseField(serializers.RelatedField):
return { return {
"id": course_id, "id": course_id,
"name": course.display_name, "name": course_overview.display_name,
"number": course.display_number_with_default, "number": course_overview.display_number_with_default,
"org": course.display_org_with_default, "org": course_overview.display_org_with_default,
"start": course.start, "start": course_overview.start,
"end": course.end, "end": course_overview.end,
"course_image": course_image_url(course), "course_image": course_overview.course_image_url,
"social_urls": { "social_urls": {
"facebook": course.facebook_url, "facebook": course_overview.facebook_url,
}, },
"latest_updates": { "latest_updates": {
"video": None "video": None
...@@ -53,7 +53,7 @@ class CourseField(serializers.RelatedField): ...@@ -53,7 +53,7 @@ class CourseField(serializers.RelatedField):
"video_outline": video_outline_url, "video_outline": video_outline_url,
"course_updates": course_updates_url, "course_updates": course_updates_url,
"course_handouts": course_handouts_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): ...@@ -61,7 +61,7 @@ class CourseEnrollmentSerializer(serializers.ModelSerializer):
""" """
Serializes CourseEnrollment models Serializes CourseEnrollment models
""" """
course = CourseField() course = CourseOverviewField(source="course_overview")
certificate = serializers.SerializerMethodField('get_certificate') certificate = serializers.SerializerMethodField('get_certificate')
def get_certificate(self, model): def get_certificate(self, model):
......
...@@ -241,7 +241,8 @@ class UserCourseEnrollmentsList(generics.ListAPIView): ...@@ -241,7 +241,8 @@ class UserCourseEnrollmentsList(generics.ListAPIView):
).order_by('created').reverse() ).order_by('created').reverse()
return [ return [
enrollment for enrollment in enrollments 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)
] ]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment