Added subsection id to gated metadata.

This commit is contained in:
Dave St.Germain
2020-01-13 12:55:11 -05:00
parent 507b85ee3d
commit 20235bcf56
3 changed files with 18 additions and 12 deletions

View File

@@ -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

View File

@@ -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'

View File

@@ -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)