def _add_questions_from_html( questions_by_usage_id, unit_id, lesson_id, html, question_group_lengths): """Parse rich-text HTML and add questions found to map by ID.""" sequence_counter = 0 for component in tags.get_components_from_html(html): if component['cpt_name'] == 'question': weight = 1.0 if 'weight' in component and component['weight'] != '': try: weight = float(component['weight']) except ValueError: logging.warning( 'Weight "%s" is not a number; using 1.0 instead.', component['weight']) questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['quid'], 'weight': weight, } sequence_counter += 1 elif component['cpt_name'] == 'question-group': questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['qgid'], } if component['qgid'] in question_group_lengths: sequence_counter += ( question_group_lengths[component['qgid']])
def _add_questions_from_html( questions_by_usage_id, unit_id, lesson_id, html, question_group_lengths): """Parse rich-text HTML and add questions found to map by ID.""" sequence_counter = 0 for component in tags.get_components_from_html(html): if component['cpt_name'] == 'question': questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['quid'], 'weight': float(component.get('weight', 1.0)), } sequence_counter += 1 elif component['cpt_name'] == 'question-group': questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['qgid'], } if component['qgid'] in question_group_lengths: sequence_counter += ( question_group_lengths[component['qgid']])
def _add_questions_from_html(questions_by_usage_id, unit_id, lesson_id, html, question_group_lengths): """Parse rich-text HTML and add questions found to map by ID.""" sequence_counter = 0 for component in tags.get_components_from_html(html): if component['cpt_name'] == 'question': weight = 1.0 if 'weight' in component and component['weight'] != '': try: weight = float(component['weight']) except ValueError: logging.warning( 'Weight "%s" is not a number; using 1.0 instead.', component['weight']) questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['quid'], 'weight': weight, } sequence_counter += 1 elif component['cpt_name'] == 'question-group': questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['qgid'], } if component['qgid'] in question_group_lengths: sequence_counter += (question_group_lengths[component['qgid']])
def _find_q_ids(html, groups): """Returns the list of question IDs referenced from rich HTML.""" question_ids = [] for component in tags.get_components_from_html(html): if component['cpt_name'] == 'question': question_ids.append(int(component['quid'])) elif component['cpt_name'] == 'question-group': for question_id in groups[int(component['qgid'])]: question_ids.append(int(question_id)) return question_ids
def _add_questions_from_html(questions_by_usage_id, unit_id, lesson_id, html, question_group_lengths): """Parse rich-text HTML and add questions found to map by ID.""" sequence_counter = 0 for component in tags.get_components_from_html(html): if component['cpt_name'] == 'question': questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['quid'], } sequence_counter += 1 elif component['cpt_name'] == 'question-group': questions_by_usage_id[component['instanceid']] = { 'unit': unit_id, 'lesson': lesson_id, 'sequence': sequence_counter, 'id': component['qgid'], } sequence_counter += (question_group_lengths[component['qgid']])