Merge pull request #13082 from edx/tnl/split-edit-version
Expose course_version and subtree_edited_on in BlockStructures
This commit is contained in:
@@ -953,7 +953,14 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo
|
||||
system.module_data.update(data_cache)
|
||||
system.cached_metadata.update(cached_metadata)
|
||||
|
||||
return system.load_item(location, for_parent=for_parent)
|
||||
item = system.load_item(location, for_parent=for_parent)
|
||||
|
||||
# TODO Once PLAT-1055 is implemented, we can remove the following line
|
||||
# of code. Until then, set the course_version field on the block to be
|
||||
# consistent with the Split modulestore. Since Mongo modulestore doesn't
|
||||
# maintain course versions set it to None.
|
||||
item.course_version = None
|
||||
return item
|
||||
|
||||
def _load_items(self, course_key, items, depth=0, using_descriptor_system=None, for_parent=None):
|
||||
"""
|
||||
|
||||
@@ -779,7 +779,15 @@ class SplitMongoModuleStore(SplitBulkWriteMixin, ModuleStoreWriteBase):
|
||||
self._add_cache(course_entry.structure['_id'], runtime)
|
||||
self.cache_items(runtime, block_keys, course_entry.course_key, depth, lazy)
|
||||
|
||||
return [runtime.load_item(block_key, course_entry, **kwargs) for block_key in block_keys]
|
||||
blocks = [runtime.load_item(block_key, course_entry, **kwargs) for block_key in block_keys]
|
||||
|
||||
# TODO Once PLAT-1055 is implemented, we can expose the course version
|
||||
# information within the key identifier of the block. Until then, set
|
||||
# the course_version as a field on each returned block so higher layers
|
||||
# can use it when needed.
|
||||
for block in blocks:
|
||||
block.course_version = course_entry.course_key.version_guid
|
||||
return blocks
|
||||
|
||||
def _get_cache(self, course_version_guid):
|
||||
"""
|
||||
|
||||
@@ -425,6 +425,25 @@ class TestMixedModuleStore(CommonMixedModuleStoreSetup):
|
||||
revision=ModuleStoreEnum.RevisionOption.draft_preferred
|
||||
)
|
||||
|
||||
@ddt.data(ModuleStoreEnum.Type.mongo, ModuleStoreEnum.Type.split)
|
||||
def test_course_version_on_block(self, default_ms):
|
||||
self.initdb(default_ms)
|
||||
self._create_block_hierarchy()
|
||||
|
||||
course = self.store.get_course(self.course.id)
|
||||
course_version = course.course_version
|
||||
|
||||
if default_ms == ModuleStoreEnum.Type.split:
|
||||
self.assertIsNotNone(course_version)
|
||||
else:
|
||||
self.assertIsNone(course_version)
|
||||
|
||||
blocks = self.store.get_items(self.course.id, qualifiers={'category': 'problem'})
|
||||
blocks.append(self.store.get_item(self.problem_x1a_1))
|
||||
self.assertEquals(len(blocks), 7)
|
||||
for block in blocks:
|
||||
self.assertEquals(block.course_version, course_version)
|
||||
|
||||
@ddt.data((ModuleStoreEnum.Type.split, 2, False), (ModuleStoreEnum.Type.mongo, 3, True))
|
||||
@ddt.unpack
|
||||
def test_get_items_include_orphans(self, default_ms, expected_items_in_tree, orphan_in_items):
|
||||
|
||||
Reference in New Issue
Block a user