Exemple #1
0
    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
Exemple #2
0
 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)