Commit 82af8d4b by Don Mitchell

Merge pull request #1124 from edx/dhm/asset_policy

Just write the loc name as the key in the policy file
parents 47621b56 f9328814
......@@ -999,13 +999,33 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
# remove old course
delete_course(module_store, content_store, location, commit=True)
# reimport over old course
stub_location = Location(['i4x', 'edX', 'toy', None, None])
course_location = course.location
self.check_import(
module_store, root_dir, draft_store, content_store, stub_location, course_location,
locked_asset, locked_asset_attrs
)
# import to different course id
stub_location = Location(['i4x', 'anotherX', 'anotherToy', None, None])
course_location = stub_location.replace(category='course', name='Someday')
self.check_import(
module_store, root_dir, draft_store, content_store, stub_location, course_location,
locked_asset, locked_asset_attrs
)
shutil.rmtree(root_dir)
def check_import(self, module_store, root_dir, draft_store, content_store, stub_location, course_location,
locked_asset, locked_asset_attrs):
# reimport
import_from_xml(
module_store, root_dir, ['test_export'], draft_store=draft_store, static_content_store=content_store
module_store, root_dir, ['test_export'], draft_store=draft_store,
static_content_store=content_store,
target_location_namespace=course_location
)
items = module_store.get_items(Location(['i4x', 'edX', 'toy', 'vertical', None]))
items = module_store.get_items(stub_location.replace(category='vertical', name=None))
self.assertGreater(len(items), 0)
for descriptor in items:
# don't try to look at private verticals. Right now we're running
......@@ -1016,11 +1036,13 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
self.assertEqual(resp.status_code, 200)
# verify that we have the content in the draft store as well
vertical = draft_store.get_item(Location(['i4x', 'edX', 'toy',
'vertical', 'vertical_test', None]), depth=1)
vertical = draft_store.get_item(
stub_location.replace(category='vertical', name='vertical_test', revision=None),
depth=1
)
self.assertTrue(getattr(vertical, 'is_draft', False))
self.assertNotIn('index_in_children_list', child.xml_attributes)
self.assertNotIn('index_in_children_list', vertical.xml_attributes)
self.assertNotIn('parent_sequential_url', vertical.xml_attributes)
for child in vertical.get_children():
......@@ -1033,27 +1055,34 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
self.assertNotIn('parent_sequential_url', child.data)
# make sure that we don't have a sequential that is in draft mode
sequential = draft_store.get_item(Location(['i4x', 'edX', 'toy',
'sequential', 'vertical_sequential', None]))
sequential = draft_store.get_item(
stub_location.replace(category='sequential', name='vertical_sequential', revision=None)
)
self.assertFalse(getattr(sequential, 'is_draft', False))
# verify that we have the private vertical
test_private_vertical = draft_store.get_item(Location(['i4x', 'edX', 'toy',
'vertical', 'a_private_vertical', None]))
test_private_vertical = draft_store.get_item(
stub_location.replace(category='vertical', name='a_private_vertical', revision=None)
)
self.assertTrue(getattr(test_private_vertical, 'is_draft', False))
# make sure the textbook survived the export/import
course = module_store.get_item(Location(['i4x', 'edX', 'toy', 'course', '2012_Fall', None]))
course = module_store.get_item(course_location)
self.assertGreater(len(course.textbooks), 0)
locked_asset['course'] = stub_location.course
locked_asset['org'] = stub_location.org
new_attrs = content_store.get_attrs(locked_asset)
for key, value in locked_asset_attrs.iteritems():
self.assertEqual(value, new_attrs[key])
shutil.rmtree(root_dir)
if key == '_id':
self.assertEqual(value['name'], new_attrs[key]['name'])
elif key == 'filename':
pass
else:
self.assertEqual(value, new_attrs[key])
def test_export_course_with_metadata_only_video(self):
module_store = modulestore('direct')
......
......@@ -122,7 +122,7 @@ class MongoContentStore(ContentStore):
self.export(asset_location, output_directory)
for attr, value in asset.iteritems():
if attr not in ['_id', 'md5', 'uploadDate', 'length', 'chunkSize']:
policy.setdefault(asset_location.url(), {})[attr] = value
policy.setdefault(asset_location.name, {})[attr] = value
with open(assets_policy_file, 'w') as f:
json.dump(policy, f)
......
......@@ -56,7 +56,7 @@ def import_static_content(modules, course_loc, course_data_path, static_content_
content_loc = StaticContent.compute_location(target_location_namespace.org, target_location_namespace.course, fullname_with_subpath)
policy_ele = policy.get(content_loc.url(), {})
policy_ele = policy.get(content_loc.name, {})
displayname = policy_ele.get('displayname', filename)
locked = policy_ele.get('locked', False)
mime_type = policy_ele.get('contentType', mimetypes.guess_type(filename)[0])
......
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