diff --git a/common/lib/xmodule/xmodule/seq_module.py b/common/lib/xmodule/xmodule/seq_module.py index 401b7006da..d88c8b1434 100644 --- a/common/lib/xmodule/xmodule/seq_module.py +++ b/common/lib/xmodule/xmodule/seq_module.py @@ -238,8 +238,6 @@ class SequenceModule(SequenceFields, ProctoringFields, XModule): 'complete': complete }) elif dispatch == 'metadata': - if self.category != 'sequential': - return json.dumps({}) context = {'exclude_units': True} prereq_met = True prereq_meta_info = {} @@ -411,11 +409,18 @@ class SequenceModule(SequenceFields, ProctoringFields, XModule): """ Returns a dict of information about gated_content context """ - gated_content = {} - gated_content['gated'] = not prereq_met - gated_content['prereq_url'] = prereq_meta_info['url'] if not prereq_met else None - gated_content['prereq_section_name'] = prereq_meta_info['display_name'] if not prereq_met else None - gated_content['gated_section_name'] = self.display_name + gated_content = { + 'prereq_id': None, + 'prereq_url': None, + 'prereq_section_name': None, + 'gated': False, + 'gated_section_name': self.display_name, + } + if not prereq_met: + gated_content['gated'] = True + gated_content['prereq_url'] = prereq_meta_info['url'] + gated_content['prereq_section_name'] = prereq_meta_info['display_name'] + gated_content['prereq_id'] = prereq_meta_info['id'] return gated_content diff --git a/common/lib/xmodule/xmodule/tests/test_sequence.py b/common/lib/xmodule/xmodule/tests/test_sequence.py index 194760cd1d..d89cf7917a 100644 --- a/common/lib/xmodule/xmodule/tests/test_sequence.py +++ b/common/lib/xmodule/xmodule/tests/test_sequence.py @@ -278,7 +278,7 @@ class SequenceBlockTestCase(XModuleXmlImportTest): gating_mock_1_2.return_value.required_prereq.return_value = True gating_mock_1_2.return_value.compute_is_prereq_met.return_value = [ False, - {'url': 'PrereqUrl', 'display_name': 'PrereqSectionName'} + {'url': 'PrereqUrl', 'display_name': 'PrereqSectionName', 'id': 'mockId'} ] self.sequence_1_2.xmodule_runtime._services['gating'] = gating_mock_1_2 # pylint: disable=protected-access self.sequence_1_2.display_name = 'sequence_1_2' diff --git a/openedx/core/lib/gating/api.py b/openedx/core/lib/gating/api.py index 80e4f621ef..d07783b2f5 100644 --- a/openedx/core/lib/gating/api.py +++ b/openedx/core/lib/gating/api.py @@ -20,7 +20,7 @@ from util import milestones_helpers from xblock.completable import XBlockCompletionMode as CompletionMode from xmodule.modulestore.django import modulestore from xmodule.modulestore.exceptions import ItemNotFoundError -import six + log = logging.getLogger(__name__) @@ -164,7 +164,7 @@ def get_prerequisites(course_key): milestone = milestones_by_block_id.get(block.location.block_id) if milestone: milestone['block_display_name'] = block.display_name - milestone['block_usage_key'] = six.text_type(block.location) + milestone['block_usage_key'] = str(block.location) result.append(milestone) return result @@ -184,7 +184,7 @@ def add_prerequisite(course_key, prereq_content_key): """ milestone = milestones_api.add_milestone( { - 'name': _(u'Gating milestone for {usage_key}').format(usage_key=six.text_type(prereq_content_key)), + 'name': _(u'Gating milestone for {usage_key}').format(usage_key=str(prereq_content_key)), 'namespace': "{usage_key}{qualifier}".format( usage_key=prereq_content_key, qualifier=GATING_NAMESPACE_QUALIFIER @@ -383,7 +383,8 @@ def compute_is_prereq_met(content_id, user_id, recalc_on_unmet=False): subsection = store.get_item(subsection_usage_key) prereq_meta_info = { 'url': reverse('jump_to', kwargs={'course_id': course_key, 'location': subsection_usage_key}), - 'display_name': subsection.display_name + 'display_name': subsection.display_name, + 'id': str(subsection_usage_key) } prereq_met = update_milestone(milestone, subsection_usage_key, milestone, student)