Ejemplo n.º 1
0
def record_learner_answer_info(
        entity_type, state_reference, interaction_id, answer, answer_details):
    """Records the new learner answer info received from the learner in the
    model and then saves it.

    Args:
        entity_type: str. The type of entity i.e ENTITY_TYPE_EXPLORATION or
            ENTITY_TYPE_QUESTION, which are declared in feconf.py.
        state_reference: str. This is used to refer to a state in an exploration
            or question. For an exploration the value will be equal to
            'exp_id:state_name' and for question this will be equal to
            'question_id'.
        interaction_id: str. The ID of the interaction.
        answer: *(json-like). The answer which is submitted by the learner. The
            actual type of answer depends on the interaction.
        answer_details: str. The details the learner will submit when the
            learner will be asked questions like 'Hey how did you land on this
            answer', 'Why did you pick that answer' etc.
    """
    learner_answer_details = get_learner_answer_details(
        entity_type, state_reference)
    if learner_answer_details is None:
        learner_answer_details = stats_domain.LearnerAnswerDetails(
            state_reference, entity_type, interaction_id, [], 0)
    learner_answer_info_id = (
        stats_domain.LearnerAnswerInfo.get_new_learner_answer_info_id())
    learner_answer_info = stats_domain.LearnerAnswerInfo(
        learner_answer_info_id, answer, answer_details,
        datetime.datetime.utcnow())
    learner_answer_details.add_learner_answer_info(learner_answer_info)
    save_learner_answer_details(
        entity_type, state_reference, learner_answer_details)
Ejemplo n.º 2
0
def get_learner_answer_details_from_model(learner_answer_details_model):
    """Returns a LearnerAnswerDetails domain object given a
    LearnerAnswerDetailsModel loaded from the datastore.

    Args:
        learner_answer_details_model: LearnerAnswerDetailsModel. The learner
            answer details model loaded from the datastore.

    Returns:
        LearnerAnswerDetails|None. A LearnerAnswerDetails domain object
        corresponding to the given model.
    """
    return stats_domain.LearnerAnswerDetails(
        learner_answer_details_model.state_reference,
        learner_answer_details_model.entity_type,
        learner_answer_details_model.interaction_id,
        [stats_domain.LearnerAnswerInfo.from_dict(learner_answer_info_dict)
         for learner_answer_info_dict
         in learner_answer_details_model.learner_answer_info_list],
        learner_answer_details_model.learner_answer_info_schema_version,
        learner_answer_details_model.accumulated_answer_info_json_size_bytes)