diff --git a/common/djangoapps/util/request.py b/common/djangoapps/util/request.py index fcd5eed610..cdf052af6c 100644 --- a/common/djangoapps/util/request.py +++ b/common/djangoapps/util/request.py @@ -7,8 +7,8 @@ from microsite_configuration import microsite from opaque_keys import InvalidKeyError from opaque_keys.edx.locations import SlashSeparatedCourseKey - -COURSE_REGEX = re.compile(r'^.*?/(api/courses/v1/)?courses/{}'.format(settings.COURSE_ID_PATTERN)) +# accommodates course api urls, excluding /blocks routes. +COURSE_REGEX = re.compile(r'^(.*?/courses/)+(?!v[0-9]+/blocks){}'.format(settings.COURSE_ID_PATTERN)) def safe_get_host(request): diff --git a/common/djangoapps/util/tests/test_request.py b/common/djangoapps/util/tests/test_request.py index 87b4e3d958..6325ca8e7c 100644 --- a/common/djangoapps/util/tests/test_request.py +++ b/common/djangoapps/util/tests/test_request.py @@ -50,8 +50,26 @@ class ResponseTestCase(unittest.TestCase): self.assertIsNone(course_id_from_url('/login')) self.assertIsNone(course_id_from_url('/course/edX/maths/2020')) self.assertIsNone(course_id_from_url('/courses/edX/maths/')) + self.assertIsNone(course_id_from_url('/api/courses/v1/blocks/edX/maths/2020')) + self.assertIsNone(course_id_from_url('/api/courses/v1/blocks/course-v1:edX+maths+2020')) course_id = course_id_from_url('/courses/edX/maths/2020') self.assertEqual(course_id.org, 'edX') self.assertEqual(course_id.course, 'maths') self.assertEqual(course_id.run, '2020') + + course_id = course_id_from_url('/courses/course-v1:edX+maths+2020') + self.assertEqual(course_id.org, 'edX') + self.assertEqual(course_id.course, 'maths') + self.assertEqual(course_id.run, '2020') + + course_id = course_id_from_url('/api/courses/v1/courses/course-v1:edX+maths+2020') + self.assertEqual(course_id.org, 'edX') + self.assertEqual(course_id.course, 'maths') + self.assertEqual(course_id.run, '2020') + + course_id = course_id_from_url('/api/courses/v1/courses/edX/maths/2020') + self.assertEqual(course_id.org, 'edX') + self.assertEqual(course_id.course, 'maths') + self.assertEqual(course_id.run, '2020') +