def _enroll_entitlement(self, entitlement, course_run_key, user): """ Internal method to handle the details of enrolling a User in a Course Run. Returns a response object is there is an error or exception, None otherwise """ try: enrollment = CourseEnrollment.enroll(user=user, course_key=course_run_key, mode=entitlement.mode, check_access=True) except AlreadyEnrolledError: enrollment = CourseEnrollment.get_enrollment(user, course_run_key) if enrollment.mode == entitlement.mode: CourseEntitlement.set_enrollment(entitlement, enrollment) # Else the User is already enrolled in another Mode and we should # not do anything else related to Entitlements. except CourseEnrollmentException: message = ( 'Course Entitlement Enroll for {username} failed for course: {course_id}, ' 'mode: {mode}, and entitlement: {entitlement}').format( username=user.username, course_id=course_run_key, mode=entitlement.mode, entitlement=entitlement.uuid) return Response(status=status.HTTP_400_BAD_REQUEST, data={'message': message}) CourseEntitlement.set_enrollment(entitlement, enrollment) return None
def _unenroll_entitlement(self, entitlement, course_run_key, user): """ Internal method to handle the details of Unenrolling a User in a Course Run. """ CourseEnrollment.unenroll(user, course_run_key, skip_refund=True) CourseEntitlement.set_enrollment(entitlement, None)