def compute_summary_of_topic(topic): """Create a TopicSummary domain object for a given Topic domain object and return it. Args: topic: Topic. The topic object for which the summary is to be computed. Returns: TopicSummary. The computed summary for the given topic. """ topic_model_canonical_story_count = len(topic.canonical_story_references) topic_model_additional_story_count = len(topic.additional_story_references) topic_model_uncategorized_skill_count = len(topic.uncategorized_skill_ids) topic_model_subtopic_count = len(topic.subtopics) total_skill_count = topic_model_uncategorized_skill_count for subtopic in topic.subtopics: total_skill_count = total_skill_count + len(subtopic.skill_ids) topic_summary = topic_domain.TopicSummary( topic.id, topic.name, topic.canonical_name, topic.language_code, topic.version, topic_model_canonical_story_count, topic_model_additional_story_count, topic_model_uncategorized_skill_count, topic_model_subtopic_count, total_skill_count, topic.created_on, topic.last_updated) return topic_summary
def get_topic_summary_from_model(topic_summary_model): """Returns a domain object for an Oppia topic summary given a topic summary model. Args: topic_summary_model: TopicSummaryModel. The topic summary model object to get the corresponding domain object. Returns: TopicSummary. The domain object corresponding to the given model object. """ return topic_domain.TopicSummary( topic_summary_model.id, topic_summary_model.name, topic_summary_model.canonical_name, topic_summary_model.language_code, topic_summary_model.description, topic_summary_model.version, topic_summary_model.canonical_story_count, topic_summary_model.additional_story_count, topic_summary_model.uncategorized_skill_count, topic_summary_model.subtopic_count, topic_summary_model.total_skill_count, topic_summary_model.thumbnail_filename, topic_summary_model.thumbnail_bg_color, topic_summary_model.url_fragment, topic_summary_model.topic_model_created_on, topic_summary_model.topic_model_last_updated)
def get_topic_summary_from_model(topic_summary_model): """Returns a domain object for an Oppia topic summary given a topic summary model. Args: topic_summary_model: TopicSummaryModel. Returns: TopicSummary. """ return topic_domain.TopicSummary( topic_summary_model.id, topic_summary_model.name, topic_summary_model.language_code, topic_summary_model.version, topic_summary_model.canonical_story_count, topic_summary_model.additional_story_count, topic_summary_model.skill_count, topic_summary_model.topic_model_created_on, topic_summary_model.topic_model_last_updated)
def compute_summary_of_topic(topic): """Create a TopicSummary domain object for a given Topic domain object and return it. Args: topic: Topic. The topic object for which the summary is to be computed. Returns: TopicSummary. The computed summary for the given topic. """ canonical_story_count = 0 additional_story_count = 0 published_node_count = 0 for reference in topic.canonical_story_references: if reference.story_is_published: canonical_story_count += 1 story_summary = story_fetchers.get_story_summary_by_id( reference.story_id) published_node_count += len(story_summary.node_titles) for reference in topic.additional_story_references: if reference.story_is_published: additional_story_count += 1 topic_model_canonical_story_count = canonical_story_count topic_model_additional_story_count = additional_story_count total_model_published_node_count = published_node_count topic_model_uncategorized_skill_count = len(topic.uncategorized_skill_ids) topic_model_subtopic_count = len(topic.subtopics) total_skill_count = topic_model_uncategorized_skill_count for subtopic in topic.subtopics: total_skill_count = total_skill_count + len(subtopic.skill_ids) topic_summary = topic_domain.TopicSummary( topic.id, topic.name, topic.canonical_name, topic.language_code, topic.description, topic.version, topic_model_canonical_story_count, topic_model_additional_story_count, topic_model_uncategorized_skill_count, topic_model_subtopic_count, total_skill_count, total_model_published_node_count, topic.thumbnail_filename, topic.thumbnail_bg_color, topic.url_fragment, topic.created_on, topic.last_updated ) return topic_summary
def setUp(self): super(TopicSummaryTests, self).setUp() current_time = datetime.datetime.utcnow() time_in_millisecs = utils.get_time_in_millisecs(current_time) self.topic_summary_dict = { 'id': 'topic_id', 'name': 'name', 'language_code': 'en', 'version': 1, 'canonical_story_count': 1, 'additional_story_count': 1, 'uncategorized_skill_count': 1, 'subtopic_count': 1, 'total_skill_count': 1, 'topic_model_created_on': time_in_millisecs, 'topic_model_last_updated': time_in_millisecs } self.topic_summary = topic_domain.TopicSummary( 'topic_id', 'name', 'name', 'en', 1, 1, 1, 1, 1, 1, current_time, current_time)