Esempio n. 1
0
    def setUp(self):
        super(AugmentedSkillSummaryTests, self).setUp()
        current_time = datetime.datetime.utcnow()
        self.time_in_millisecs = utils.get_time_in_millisecs(current_time)

        self.augmented_skill_summary = skill_domain.AugmentedSkillSummary(
            'skill_id', 'description', 'en', 1, 1, 1, ['topic1'], ['math'],
            current_time, current_time)
Esempio n. 2
0
def _get_augmented_skill_summaries_in_batches(
        num_skills_to_fetch, urlsafe_start_cursor, sort_by):
    """Returns all the Augmented skill summaries after attaching
    topic and classroom.

    Returns:
        3-tuple(augmented_skill_summaries, urlsafe_start_cursor, more). Where:
            augmented_skill_summaries: list(AugmentedSkillSummary). The list of
                skill summaries.
            urlsafe_start_cursor: str or None. A query cursor pointing to the
                next batch of results. If there are no more results, this might
                be None.
            more: bool. If True, there are (probably) more results after this
                batch. If False, there are no further results after this batch.
    """
    skill_summaries, new_urlsafe_start_cursor, more = (
        _get_skill_summaries_in_batches(
            num_skills_to_fetch, urlsafe_start_cursor, sort_by))

    assigned_skill_ids = collections.defaultdict(lambda: {
        'topic_names': [],
        'classroom_names': []
    })

    all_topic_models = topic_models.TopicModel.get_all()
    all_topics = [topic_fetchers.get_topic_from_model(topic_model)
                  if topic_model is not None else None
                  for topic_model in all_topic_models]

    topic_classroom_dict = {}
    all_classrooms_dict = config_domain.CLASSROOM_PAGES_DATA.value

    for classroom in all_classrooms_dict:
        for topic_id in classroom['topic_ids']:
            topic_classroom_dict[topic_id] = classroom['name']

    for topic in all_topics:
        for skill_id in topic.get_all_skill_ids():
            assigned_skill_ids[skill_id]['topic_names'].append(topic.name)
            assigned_skill_ids[skill_id]['classroom_names'].append(
                topic_classroom_dict.get(topic.id, None))

    augmented_skill_summaries = []
    for skill_summary in skill_summaries:
        topic_names = []
        classroom_names = []
        if skill_summary.id in assigned_skill_ids:
            topic_names = assigned_skill_ids[skill_summary.id]['topic_names']
            classroom_names = (
                assigned_skill_ids[skill_summary.id]['classroom_names'])

        augmented_skill_summary = skill_domain.AugmentedSkillSummary(
            skill_summary.id,
            skill_summary.description,
            skill_summary.language_code,
            skill_summary.version,
            skill_summary.misconception_count,
            skill_summary.worked_examples_count,
            topic_names,
            classroom_names,
            skill_summary.skill_model_created_on,
            skill_summary.skill_model_last_updated)
        augmented_skill_summaries.append(augmented_skill_summary)

    return augmented_skill_summaries, new_urlsafe_start_cursor, more