Quick tweaks to the API Aggregating course modes data. Fixing the POST request endpoints.
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
"""
|
|
Data Aggregation Layer of the Enrollment API. Collects all enrollment specific data into a single
|
|
source to be used throughout the API.
|
|
|
|
"""
|
|
from django.contrib.auth.models import User
|
|
from opaque_keys.edx.keys import CourseKey
|
|
from enrollment.serializers import CourseEnrollmentSerializer
|
|
from student.models import CourseEnrollment
|
|
|
|
|
|
def get_course_enrollments(student_id):
|
|
qset = CourseEnrollment.objects.filter(
|
|
user__username=student_id, is_active=True
|
|
).order_by('created')
|
|
return CourseEnrollmentSerializer(qset).data
|
|
|
|
|
|
def get_course_enrollment(student_id, course_id):
|
|
course_key = CourseKey.from_string(course_id)
|
|
try:
|
|
enrollment = CourseEnrollment.objects.get(
|
|
user__username=student_id, course_id=course_key
|
|
)
|
|
return CourseEnrollmentSerializer(enrollment).data
|
|
except CourseEnrollment.DoesNotExist:
|
|
return None
|
|
|
|
|
|
def update_course_enrollment(student_id, course_id, mode=None, is_active=None):
|
|
course_key = CourseKey.from_string(course_id)
|
|
student = User.objects.get(username=student_id)
|
|
if not CourseEnrollment.is_enrolled(student, course_key):
|
|
enrollment = CourseEnrollment.enroll(student, course_key)
|
|
else:
|
|
enrollment = CourseEnrollment.objects.get(user=student, course_id=course_key)
|
|
|
|
enrollment.update_enrollment(is_active=is_active, mode=mode)
|
|
enrollment.save()
|
|
return CourseEnrollmentSerializer(enrollment).data
|
|
|
|
|
|
def get_course_enrollment_info(course_id):
|
|
pass
|
|
|
|
|
|
def get_course_enrollments_info(student_id):
|
|
pass
|