Commit a689bd2a by Tim Krones

Move code that computes block ID into separate method.

parent 74e027cf
...@@ -137,13 +137,18 @@ class InstructorToolBlock(XBlock): ...@@ -137,13 +137,18 @@ class InstructorToolBlock(XBlock):
block_types = ('pb-mcq', 'pb-rating', 'pb-answer') block_types = ('pb-mcq', 'pb-rating', 'pb-answer')
flat_block_tree = [] flat_block_tree = []
def get_block_id(block):
"""
Return ID of `block`, taking into account needs of both LMS/CMS and workbench runtimes.
"""
usage_id = block.scope_ids.usage_id
# Try accessing block ID. If usage_id does not have it, return usage_id itself
return unicode(getattr(usage_id, 'block_id', usage_id))
def build_tree(block, ancestors): def build_tree(block, ancestors):
""" """
Build up a tree of information about the XBlocks descending from root_block Build up a tree of information about the XBlocks descending from root_block
""" """
block_id = block.scope_ids.usage_id
# Block ID not in workbench runtime.
block_id = unicode(getattr(block_id, 'block_id', block_id))
block_name = getattr(block, "display_name", None) block_name = getattr(block, "display_name", None)
block_type = block.runtime.id_reader.get_block_type(block.scope_ids.def_id) block_type = block.runtime.id_reader.get_block_type(block.scope_ids.def_id)
if not block_name and block_type in block_types: if not block_name and block_type in block_types:
...@@ -157,7 +162,7 @@ class InstructorToolBlock(XBlock): ...@@ -157,7 +162,7 @@ class InstructorToolBlock(XBlock):
ancestor["eligible"] = True ancestor["eligible"] = True
new_entry = { new_entry = {
"depth": len(ancestors), "depth": len(ancestors),
"id": block_id, "id": get_block_id(block),
"name": block_name, "name": block_name,
"eligible": eligible, "eligible": eligible,
} }
...@@ -170,9 +175,7 @@ class InstructorToolBlock(XBlock): ...@@ -170,9 +175,7 @@ class InstructorToolBlock(XBlock):
root_block = self root_block = self
while root_block.parent: while root_block.parent:
root_block = root_block.get_parent() root_block = root_block.get_parent()
root_block_id = root_block.scope_ids.usage_id root_block_id = get_block_id(root_block)
# Block ID not in workbench runtime.
root_block_id = unicode(getattr(root_block_id, 'block_id', root_block_id))
root_entry = { root_entry = {
"depth": 0, "depth": 0,
"id": root_block_id, "id": root_block_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