Make course ids and usage ids opaque to LMS and Studio [partial commit]
This commit updates common/djangoapps. These keys are now objects with a limited interface, and the particular internal representation is managed by the data storage layer (the modulestore). For the LMS, there should be no outward-facing changes to the system. The keys are, for now, a change to internal representation only. For Studio, the new serialized form of the keys is used in urls, to allow for further migration in the future. Co-Author: Andy Armstrong <andya@edx.org> Co-Author: Christina Roberts <christina@edx.org> Co-Author: David Baumgold <db@edx.org> Co-Author: Diana Huang <dkh@edx.org> Co-Author: Don Mitchell <dmitchell@edx.org> Co-Author: Julia Hansbrough <julia@edx.org> Co-Author: Nimisha Asthagiri <nasthagiri@edx.org> Co-Author: Sarina Canelake <sarina@edx.org> [LMS-2370]
This commit is contained in:
@@ -15,9 +15,9 @@ from django.test.utils import override_settings
|
||||
from student.models import CourseEnrollment
|
||||
|
||||
from xmodule.contentstore.django import contentstore, _CONTENTSTORE
|
||||
from xmodule.modulestore import Location
|
||||
from xmodule.contentstore.content import StaticContent
|
||||
from xmodule.modulestore.django import modulestore
|
||||
from xmodule.modulestore.locations import SlashSeparatedCourseKey
|
||||
from xmodule.modulestore.tests.django_utils import (studio_store_config,
|
||||
ModuleStoreTestCase)
|
||||
from xmodule.modulestore.xml_importer import import_from_xml
|
||||
@@ -47,18 +47,20 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
|
||||
self.client = Client()
|
||||
self.contentstore = contentstore()
|
||||
|
||||
# A locked asset
|
||||
self.loc_locked = Location('c4x', 'edX', 'toy', 'asset', 'sample_static.txt')
|
||||
self.url_locked = StaticContent.get_url_path_from_location(self.loc_locked)
|
||||
|
||||
# An unlocked asset
|
||||
self.loc_unlocked = Location('c4x', 'edX', 'toy', 'asset', 'another_static.txt')
|
||||
self.url_unlocked = StaticContent.get_url_path_from_location(self.loc_unlocked)
|
||||
self.course_key = SlashSeparatedCourseKey('edX', 'toy', '2012_Fall')
|
||||
|
||||
import_from_xml(modulestore('direct'), 'common/test/data/', ['toy'],
|
||||
static_content_store=self.contentstore, verbose=True)
|
||||
|
||||
self.contentstore.set_attr(self.loc_locked, 'locked', True)
|
||||
# A locked asset
|
||||
self.locked_asset = self.course_key.make_asset_key('asset', 'sample_static.txt')
|
||||
self.url_locked = self.locked_asset.to_deprecated_string()
|
||||
|
||||
# An unlocked asset
|
||||
self.unlocked_asset = self.course_key.make_asset_key('asset', 'another_static.txt')
|
||||
self.url_unlocked = self.unlocked_asset.to_deprecated_string()
|
||||
|
||||
self.contentstore.set_attr(self.locked_asset, 'locked', True)
|
||||
|
||||
# Create user
|
||||
self.usr = 'testuser'
|
||||
@@ -114,10 +116,8 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
|
||||
Test that locked assets behave appropriately in case user is logged in
|
||||
and registered for the course.
|
||||
"""
|
||||
# pylint: disable=E1101
|
||||
course_id = "/".join([self.loc_locked.org, self.loc_locked.course, '2012_Fall'])
|
||||
CourseEnrollment.enroll(self.user, course_id)
|
||||
self.assertTrue(CourseEnrollment.is_enrolled(self.user, course_id))
|
||||
CourseEnrollment.enroll(self.user, self.course_key)
|
||||
self.assertTrue(CourseEnrollment.is_enrolled(self.user, self.course_key))
|
||||
|
||||
self.client.login(username=self.usr, password=self.pwd)
|
||||
resp = self.client.get(self.url_locked)
|
||||
@@ -127,9 +127,6 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
|
||||
"""
|
||||
Test that locked assets behave appropriately in case user is staff.
|
||||
"""
|
||||
# pylint: disable=E1101
|
||||
course_id = "/".join([self.loc_locked.org, self.loc_locked.course, '2012_Fall'])
|
||||
|
||||
self.client.login(username=self.staff_usr, password=self.staff_pwd)
|
||||
resp = self.client.get(self.url_locked)
|
||||
self.assertEqual(resp.status_code, 200) # pylint: disable=E1103
|
||||
|
||||
Reference in New Issue
Block a user