Merge pull request #4353 from edx/flowerhack/lms-deprecated-urls

Enables LMS to handle deprecated URLs
This commit is contained in:
Julia Hansbrough
2014-07-09 18:23:00 -04:00
13 changed files with 122 additions and 97 deletions

View File

@@ -1,9 +1,12 @@
from django.conf.urls import include, patterns, url
from django.conf import settings
from django.views.generic import TemplateView
from course_modes import views
urlpatterns = patterns(
'',
url(r'^choose/(?P<course_id>[^/]+/[^/]+/[^/]+)/$', views.ChooseModeView.as_view(), name="course_modes_choose"),
# pylint seems to dislike as_view() calls because it's a `classonlymethod` instead of `classmethod`, so we disable the warning
url(r'^choose/{}/$'.format(settings.COURSE_ID_PATTERN), views.ChooseModeView.as_view(), name="course_modes_choose"), # pylint: disable=no-value-for-parameter
)

View File

@@ -87,6 +87,7 @@ from util.password_policy_validators import (
from third_party_auth import pipeline, provider
from xmodule.error_module import ErrorDescriptor
log = logging.getLogger("edx.student")
AUDIT_LOG = logging.getLogger("audit")
@@ -657,13 +658,16 @@ def change_enrollment(request):
return HttpResponseBadRequest(_("Enrollment action is invalid"))
# TODO: This function is kind of gnarly/hackish/etc and is only used in one location.
# It'd be awesome if we could get rid of it; manually parsing course_id strings form larger strings
# seems Probably Incorrect
def _parse_course_id_from_string(input_str):
"""
Helper function to determine if input_str (typically the queryparam 'next') contains a course_id.
@param input_str:
@return: the course_id if found, None if not
"""
m_obj = re.match(r'^/courses/(?P<course_id>[^/]+/[^/]+/[^/]+)', input_str)
m_obj = re.match(r'^/courses/{}'.format(settings.COURSE_ID_PATTERN), input_str)
if m_obj:
return SlashSeparatedCourseKey.from_deprecated_string(m_obj.group('course_id'))
return None

View File

@@ -5,7 +5,8 @@ from django.conf import settings
from microsite_configuration import microsite
from opaque_keys.edx.locations import SlashSeparatedCourseKey
COURSE_REGEX = re.compile(r'^.*?/courses/(?P<course_id>[^/]+/[^/]+/[^/]+)')
COURSE_REGEX = re.compile(r'^.*?/courses/{}'.format(settings.COURSE_ID_PATTERN))
def safe_get_host(request):