Merge pull request #7057 from edx/aleffert/existing-enrollment-success
Convert enrollment already exists errors to success.
This commit is contained in:
@@ -97,7 +97,8 @@ def create_course_enrollment(username, course_id, mode, is_active):
|
||||
except CourseFullError as err:
|
||||
raise CourseEnrollmentFullError(err.message)
|
||||
except AlreadyEnrolledError as err:
|
||||
raise CourseEnrollmentExistsError(err.message)
|
||||
enrollment = get_course_enrollment(username, course_id)
|
||||
raise CourseEnrollmentExistsError(err.message, enrollment)
|
||||
|
||||
|
||||
def update_course_enrollment(username, course_id, mode=None, is_active=None):
|
||||
|
||||
@@ -30,7 +30,11 @@ class CourseEnrollmentFullError(CourseEnrollmentError):
|
||||
|
||||
|
||||
class CourseEnrollmentExistsError(CourseEnrollmentError):
|
||||
pass
|
||||
enrollment = None
|
||||
|
||||
def __init__(self, message, enrollment):
|
||||
super(CourseEnrollmentExistsError, self).__init__(message)
|
||||
self.enrollment = enrollment
|
||||
|
||||
|
||||
class CourseModeNotFoundError(CourseEnrollmentError):
|
||||
|
||||
@@ -255,6 +255,11 @@ class EnrollmentTest(ModuleStoreTestCase, APITestCase):
|
||||
self.assertTrue(data['is_active'])
|
||||
return resp
|
||||
|
||||
def test_enrollment_already_enrolled(self):
|
||||
response = self._create_enrollment()
|
||||
repeat_response = self._create_enrollment()
|
||||
self.assertEqual(json.loads(response.content), json.loads(repeat_response.content))
|
||||
|
||||
def test_get_enrollment_with_invalid_key(self):
|
||||
resp = self.client.post(
|
||||
reverse('courseenrollments'),
|
||||
|
||||
@@ -17,7 +17,9 @@ from rest_framework.views import APIView
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from opaque_keys import InvalidKeyError
|
||||
from enrollment import api
|
||||
from enrollment.errors import CourseNotFoundError, CourseEnrollmentError, CourseModeNotFoundError
|
||||
from enrollment.errors import (
|
||||
CourseNotFoundError, CourseEnrollmentError, CourseModeNotFoundError, CourseEnrollmentExistsError
|
||||
)
|
||||
from embargo import api as embargo_api
|
||||
from util.authentication import SessionAuthenticationAllowInactiveUser
|
||||
from util.disable_rate_limit import can_disable_rate_limit
|
||||
@@ -339,6 +341,8 @@ class EnrollmentListView(APIView):
|
||||
"message": u"No course '{course_id}' found for enrollment".format(course_id=course_id)
|
||||
}
|
||||
)
|
||||
except CourseEnrollmentExistsError as error:
|
||||
return Response(data=error.enrollment)
|
||||
except CourseEnrollmentError:
|
||||
return Response(
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
|
||||
Reference in New Issue
Block a user