Ejemplo n.º 1
0
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']])
Ejemplo n.º 2
0
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']])
Ejemplo n.º 3
0
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']])
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
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']])