Workaround an issue with capa modules
This commit is contained in:
committed by
E. Kolpakov
parent
e768fb9a4b
commit
ea579bf54b
@@ -2182,6 +2182,16 @@ class SplitMongoModuleStore(SplitBulkWriteMixin, ModuleStoreWriteBase):
|
||||
existing_block_info = dest_structure['blocks'].get(new_block_key, {})
|
||||
# Inherit the Scope.settings values from 'fields' to 'defaults'
|
||||
new_block_info['defaults'] = new_block_info['fields']
|
||||
|
||||
# <workaround>
|
||||
# CAPA modules store their 'markdown' value (an alternate representation of their content) in Scope.settings rather than Scope.content :-/
|
||||
# markdown is a field that really should not be overridable - it fundamentally changes the content.
|
||||
# capa modules also use a custom editor that always saves their markdown field to the metadata, even if it hasn't changed, which breaks our override system.
|
||||
# So until capa modules are fixed, we special-case them and remove their markdown fields, forcing the inherited version to use XML only.
|
||||
if usage_key.block_type == 'problem' and 'markdown' in new_block_info['defaults']:
|
||||
del new_block_info['defaults']['markdown']
|
||||
# </workaround>
|
||||
|
||||
new_block_info['fields'] = existing_block_info.get('fields', {}) # Preserve any existing overrides
|
||||
if 'children' in new_block_info['defaults']:
|
||||
del new_block_info['defaults']['children'] # Will be set later
|
||||
|
||||
@@ -274,6 +274,10 @@ class TestSplitCopyTemplate(MixedSplitTestCase):
|
||||
problem_block_course = self.store.get_item(vertical_block_course.children[0])
|
||||
self.assertEqual(problem_block_course.display_name, problem_library_display_name)
|
||||
|
||||
# Check that when capa modules are copied, their "markdown" fields (Scope.settings) are removed. (See note in split.py:copy_from_template())
|
||||
self.assertIsNotNone(problem_block.markdown)
|
||||
self.assertIsNone(problem_block_course.markdown)
|
||||
|
||||
# Override the display_name and weight:
|
||||
new_display_name = "The Trouble with Tribbles"
|
||||
new_weight = 20
|
||||
|
||||
Reference in New Issue
Block a user