Course Blocks API: Support accessing a substructure MA-1604
This commit is contained in:
@@ -26,7 +26,7 @@ def get_blocks(
|
||||
|
||||
Arguments:
|
||||
request (HTTPRequest): Used for calling django reverse.
|
||||
usage_key (UsageKey): Identifies the root block of interest.
|
||||
usage_key (UsageKey): Identifies the starting block of interest.
|
||||
user (User): Optional user object for whom the blocks are being
|
||||
retrieved. If None, blocks are returned regardless of access checks.
|
||||
depth (integer or None): Identifies the depth of the tree to return
|
||||
|
||||
@@ -58,3 +58,22 @@ class TestGetBlocks(EnableTransformerRegistryMixin, SharedModuleStoreTestCase):
|
||||
|
||||
self.assertIn(unicode(problem_block.location), vertical_descendants)
|
||||
self.assertNotIn(unicode(self.html_block.location), vertical_descendants)
|
||||
|
||||
def test_sub_structure(self):
|
||||
sequential_block = self.store.get_item(self.course.id.make_usage_key('sequential', 'sequential_y1'))
|
||||
|
||||
blocks = get_blocks(self.request, sequential_block.location, self.user)
|
||||
self.assertEquals(blocks['root'], unicode(sequential_block.location))
|
||||
self.assertEquals(len(blocks['blocks']), 5)
|
||||
|
||||
for block_type, block_name, is_inside_of_structure in (
|
||||
('vertical', 'vertical_y1a', True),
|
||||
('problem', 'problem_y1a_1', True),
|
||||
('chapter', 'chapter_y', False),
|
||||
('sequential', 'sequential_x1', False),
|
||||
):
|
||||
block = self.store.get_item(self.course.id.make_usage_key(block_type, block_name))
|
||||
if is_inside_of_structure:
|
||||
self.assertIn(unicode(block.location), blocks['blocks'])
|
||||
else:
|
||||
self.assertNotIn(unicode(block.location), blocks['blocks'])
|
||||
|
||||
@@ -89,7 +89,8 @@ class BlocksView(DeveloperErrorViewMixin, ListAPIView):
|
||||
|
||||
The following fields are returned with a successful response.
|
||||
|
||||
* root: The ID of the root node of the course blocks.
|
||||
* root: The ID of the root node of the requested course block
|
||||
structure.
|
||||
|
||||
* blocks: A dictionary that maps block usage IDs to a collection of
|
||||
information about each block. Each block contains the following
|
||||
|
||||
Reference in New Issue
Block a user