Consolidate access checks for prereqs and surveys.
This commit is contained in:
@@ -42,6 +42,10 @@ def mobile_course_access(depth=0):
|
||||
except CoursewareAccessException as error:
|
||||
return Response(data=error.to_json(), status=status.HTTP_404_NOT_FOUND)
|
||||
except CourseAccessRedirect as error:
|
||||
# If the redirect contains information about the triggering AccessError,
|
||||
# return the information contained in the AccessError.
|
||||
if error.access_error is not None:
|
||||
return Response(data=error.access_error.to_json(), status=status.HTTP_404_NOT_FOUND)
|
||||
# Raise a 404 if the user does not have course access
|
||||
raise Http404
|
||||
return func(self, request, course=course, *args, **kwargs)
|
||||
|
||||
@@ -4,7 +4,7 @@ Milestone related tests for the mobile_api
|
||||
from django.conf import settings
|
||||
from mock import patch
|
||||
|
||||
from courseware.access_response import MilestoneError
|
||||
from courseware.access_response import MilestoneAccessError
|
||||
from courseware.tests.test_entrance_exam import add_entrance_exam_milestone, answer_entrance_exam_problem
|
||||
from openedx.core.djangolib.testing.utils import get_mock_request
|
||||
from util.milestones_helpers import add_prerequisite_course, fulfill_course_milestone
|
||||
@@ -136,4 +136,4 @@ class MobileAPIMilestonesMixin(object):
|
||||
self.api_response()
|
||||
else:
|
||||
response = self.api_response(expected_response_code=404)
|
||||
self.assertEqual(response.data, MilestoneError().to_json())
|
||||
self.assertEqual(response.data, MilestoneAccessError().to_json())
|
||||
|
||||
@@ -18,7 +18,7 @@ from certificates.api import generate_user_certificates
|
||||
from certificates.models import CertificateStatuses
|
||||
from certificates.tests.factories import GeneratedCertificateFactory
|
||||
from course_modes.models import CourseMode
|
||||
from courseware.access_response import MilestoneError, StartDateError, VisibilityError
|
||||
from courseware.access_response import MilestoneAccessError, StartDateError, VisibilityError
|
||||
from lms.djangoapps.grades.tests.utils import mock_passing_grade
|
||||
from mobile_api.testutils import (
|
||||
MobileAPITestCase,
|
||||
@@ -155,7 +155,7 @@ class TestUserEnrollmentApi(UrlResetMixin, MobileAPITestCase, MobileAuthUserTest
|
||||
]
|
||||
|
||||
expected_error_codes = [
|
||||
MilestoneError().error_code, # 'unfulfilled_milestones'
|
||||
MilestoneAccessError().error_code, # 'unfulfilled_milestones'
|
||||
StartDateError(self.NEXT_WEEK).error_code, # 'course_not_started'
|
||||
VisibilityError().error_code, # 'not_visible_to_user'
|
||||
None,
|
||||
|
||||
Reference in New Issue
Block a user