Commit 4f60a30a by Don Mitchell

Remove as_old_location methods

They were incorrect if there were periods in the org or name.
parent 7aae6223
...@@ -37,9 +37,7 @@ def get_course_groupname_for_role(location, role): ...@@ -37,9 +37,7 @@ def get_course_groupname_for_role(location, role):
groupnames.append('{0}_{1}'.format(role, location.course)) groupnames.append('{0}_{1}'.format(role, location.course))
elif isinstance(location, CourseLocator): elif isinstance(location, CourseLocator):
old_location = loc_mapper().translate_locator_to_location(location) old_location = loc_mapper().translate_locator_to_location(location)
if old_location is None: if old_location:
groupnames.append('{0}_{1}'.format(role, location.as_old_location_course_id))
else:
groupnames.append('{0}_{1}'.format(role, old_location.course_id)) groupnames.append('{0}_{1}'.format(role, old_location.course_id))
for groupname in groupnames: for groupname in groupnames:
......
...@@ -131,9 +131,9 @@ def course_index(request, course_url): ...@@ -131,9 +131,9 @@ def course_index(request, course_url):
lms_link = get_lms_link_for_item(old_location) lms_link = get_lms_link_for_item(old_location)
upload_asset_callback_url = reverse('upload_asset', kwargs={ upload_asset_callback_url = reverse('upload_asset', kwargs={
'org': location.as_old_location_org, 'org': old_location.org,
'course': location.as_old_location_course, 'course': old_location.course,
'coursename': location.as_old_location_run 'coursename': old_location.name
}) })
course = modulestore().get_item(old_location, depth=3) course = modulestore().get_item(old_location, depth=3)
......
...@@ -263,56 +263,6 @@ class CourseLocator(Locator): ...@@ -263,56 +263,6 @@ class CourseLocator(Locator):
version_guid=self.version_guid, version_guid=self.version_guid,
branch=self.branch) branch=self.branch)
OLD_COURSE_ID_RE = re.compile(r'^(?P<org>[^.]+)\.?(?P<old_course_id>.+)?\.(?P<run>[^.]+)$')
@property
def as_old_location_course_id(self):
"""
The original Location type presented its course id as org/course/run. This function
assumes the course_id starts w/ org, has an arbitrarily long 'course' identifier, and then
ends w/ run all separated by periods.
If this object does not have a course_id, this function returns None.
"""
if self.course_id is None:
return None
parsed = self.OLD_COURSE_ID_RE.match(self.course_id)
# check whether there are 2 or > 2 'fields'
if parsed.group('old_course_id'):
return '/'.join(parsed.groups())
else:
return parsed.group('org') + '/' + parsed.group('run')
def _old_location_field_helper(self, field):
"""
Parse course_id to get the old location field named field out
"""
if self.course_id is None:
return None
parsed = self.OLD_COURSE_ID_RE.match(self.course_id)
return parsed.group(field)
@property
def as_old_location_org(self):
"""
Presume the first part of the course_id is the org and return it.
"""
return self._old_location_field_helper('org')
@property
def as_old_location_course(self):
"""
Presume the middle part, if any, of the course_id is the old location scheme's
course id and return it.
"""
return self._old_location_field_helper('old_course_id')
@property
def as_old_location_run(self):
"""
Presume the last part of the course_id is the old location scheme's run and return it.
"""
return self._old_location_field_helper('run')
def init_from_url(self, url): def init_from_url(self, url):
""" """
url must be a string beginning with 'edx://' and containing url must be a string beginning with 'edx://' and containing
......
...@@ -283,21 +283,6 @@ class LocatorTest(TestCase): ...@@ -283,21 +283,6 @@ class LocatorTest(TestCase):
Locator.to_locator_or_location("hello.world.not.a.url") Locator.to_locator_or_location("hello.world.not.a.url")
self.assertIsNone(Locator.parse_url("unknown://foo.bar/baz")) self.assertIsNone(Locator.parse_url("unknown://foo.bar/baz"))
def test_as_old(self):
"""
Test the as_old_location_xxx accessors
"""
locator = CourseLocator(course_id='org.course.id.run', branch='mybranch')
self.assertEqual('org', locator.as_old_location_org)
self.assertEqual('course.id', locator.as_old_location_course)
self.assertEqual('run', locator.as_old_location_run)
self.assertEqual('org/course.id/run', locator.as_old_location_course_id)
locator = CourseLocator(course_id='org.course', branch='mybranch')
self.assertEqual('org', locator.as_old_location_org)
self.assertIsNone(locator.as_old_location_course)
self.assertEqual('course', locator.as_old_location_run)
self.assertEqual('org/course', locator.as_old_location_course_id)
def test_description_locator_url(self): def test_description_locator_url(self):
object_id = '{:024x}'.format(random.randrange(16 ** 24)) object_id = '{:024x}'.format(random.randrange(16 ** 24))
definition_locator = DefinitionLocator(object_id) definition_locator = DefinitionLocator(object_id)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment