def test_serialize_examples(self, data): self._configure_xblock(data) for assessment in data["assessments"]: if "student-training" == assessment["name"] and assessment["examples"]: xml_str = serialize_examples_to_xml_str(assessment) for part in assessment["examples"][0]["answer"]["parts"]: self.assertIn(part["text"], xml_str)
def test_serialize_examples(self, data): self._configure_xblock(data) for assessment in data['assessments']: if 'student-training' == assessment['name'] and assessment[ 'examples']: xml_str = serialize_examples_to_xml_str(assessment) self.assertIn(assessment['examples'][0]['answer'], xml_str)
def test_serialize_examples(self, data): self._configure_xblock(data) for assessment in data['assessments']: if 'student-training' == assessment['name'] and assessment['examples']: xml_str = serialize_examples_to_xml_str(assessment) for part in assessment['examples'][0]['answer']['parts']: self.assertIn(part['text'], xml_str)
def _assessments_editor_context(self, assessment_dates): """ Transform the rubric assessments list into the context we will pass to the Django template. Args: assessment_dates: List of assessment date ranges (tuples of start/end datetimes). Returns: dict """ assessments = {} for asmnt, date_range in zip(self.rubric_assessments, assessment_dates): # Django Templates cannot handle dict keys with dashes, so we'll convert # the dashes to underscores. template_name = make_django_template_key(asmnt['name']) assessments[template_name] = copy.deepcopy(asmnt) assessments[template_name]['start'] = date_range[0] assessments[template_name]['due'] = date_range[1] # In addition to the data in the student training assessment, we need to include two additional # pieces of information: a blank context to render the empty template with, and the criteria # for each example (so we don't have any complicated logic within the template). Though this # could be accomplished within the template, we are opting to remove logic from the template. student_training_module = self.get_assessment_module('student-training') student_training_template = { 'answer': { 'parts': [ {'text': ''} for prompt in self.prompts ] } } criteria_list = copy.deepcopy(self.rubric_criteria_with_labels) for criterion in criteria_list: criterion['option_selected'] = "" student_training_template['criteria'] = criteria_list if student_training_module: student_training_module = update_assessments_format([student_training_module])[0] example_list = [] # Adds each example to a modified version of the student training module dictionary. for example in student_training_module['examples']: criteria_list = copy.deepcopy(self.rubric_criteria_with_labels) # Equivalent to a Join Query, this adds the selected option to the Criterion's dictionary, so that # it can be easily referenced in the template without searching through the selected options. for criterion in criteria_list: for option_selected in example['options_selected']: if option_selected['criterion'] == criterion['name']: criterion['option_selected'] = option_selected['option'] example_list.append({ 'answer': example['answer'], 'criteria': criteria_list, }) assessments['training'] = {'examples': example_list, 'template': student_training_template} # If we don't have student training enabled, we still need to render a single (empty, or default) example else: assessments['training'] = {'examples': [student_training_template], 'template': student_training_template} example_based_assessment = self.get_assessment_module('example-based-assessment') if example_based_assessment: assessments['example_based_assessment'] = { 'examples': serialize_examples_to_xml_str(example_based_assessment) } return assessments
def _assessments_editor_context(self, assessment_dates): """ Transform the rubric assessments list into the context we will pass to the Django template. Args: assessment_dates: List of assessment date ranges (tuples of start/end datetimes). Returns: dict """ assessments = {} for asmnt, date_range in zip(self.rubric_assessments, assessment_dates): # Django Templates cannot handle dict keys with dashes, so we'll convert # the dashes to underscores. template_name = make_django_template_key(asmnt['name']) assessments[template_name] = copy.deepcopy(asmnt) assessments[template_name]['start'] = date_range[0] assessments[template_name]['due'] = date_range[1] # In addition to the data in the student training assessment, we need to include two additional # pieces of information: a blank context to render the empty template with, and the criteria # for each example (so we don't have any complicated logic within the template). Though this # could be accomplished within the template, we are opting to remove logic from the template. student_training_module = self.get_assessment_module( 'student-training') student_training_template = { 'answer': { 'parts': [{ 'text': '' } for prompt in self.prompts] } } criteria_list = copy.deepcopy(self.rubric_criteria_with_labels) for criterion in criteria_list: criterion['option_selected'] = "" student_training_template['criteria'] = criteria_list if student_training_module: student_training_module = update_assessments_format( [student_training_module])[0] example_list = [] # Adds each example to a modified version of the student training module dictionary. for example in student_training_module['examples']: criteria_list = copy.deepcopy(self.rubric_criteria_with_labels) # Equivalent to a Join Query, this adds the selected option to the Criterion's dictionary, so that # it can be easily referenced in the template without searching through the selected options. for criterion in criteria_list: for option_selected in example['options_selected']: if option_selected['criterion'] == criterion['name']: criterion['option_selected'] = option_selected[ 'option'] example_list.append({ 'answer': example['answer'], 'criteria': criteria_list, }) assessments['training'] = { 'examples': example_list, 'template': student_training_template } # If we don't have student training enabled, we still need to render a single (empty, or default) example else: assessments['training'] = { 'examples': [student_training_template], 'template': student_training_template } example_based_assessment = self.get_assessment_module( 'example-based-assessment') if example_based_assessment: assessments['example_based_assessment'] = { 'examples': serialize_examples_to_xml_str(example_based_assessment) } return assessments