def add_uncategorized_skill_id(self, new_uncategorized_skill_id): """Updates the skill id list of a topic object. Args: new_uncategorized_skill_id: str. The new skill id to add to uncategorized_skill_ids list. Raises: Exception. The given skill id is already present in a subtopic. """ for subtopic in self.subtopics: if new_uncategorized_skill_id in subtopic.skill_ids: raise Exception( 'The skill id %s already exists in subtopic with id %s.' % (new_uncategorized_skill_id, subtopic.id)) if new_uncategorized_skill_id in self.uncategorized_skill_ids: raise Exception( 'The skill id %s is already an uncategorized skill.' % new_uncategorized_skill_id) skill_ids_for_unpublished_skills = [ skill_rights.id for skill_rights in ( skill_services.get_all_unpublished_skill_rights()) ] if new_uncategorized_skill_id in skill_ids_for_unpublished_skills: raise Exception('Cannot assign unpublished skills to a topic') self.uncategorized_skill_ids.append(new_uncategorized_skill_id)
def _add_uncategorized_skill_id_to_topic(topic, uncategorized_skill_id): """Adds an uncategorized skill_id to a topic. Args: topic: Topic. Topic to be modified. uncategorized_skill_id: str. Skill ID to be added. """ skill_ids_for_unpublished_skills = [ skill_rights.id for skill_rights in (skill_services.get_all_unpublished_skill_rights()) ] if uncategorized_skill_id in skill_ids_for_unpublished_skills: raise Exception('Cannot assign unpublished skills to a topic') topic.add_uncategorized_skill_id(uncategorized_skill_id)
def get(self): """Handles GET requests.""" topic_summaries = topic_services.get_all_topic_summaries() topic_summary_dicts = [ summary.to_dict() for summary in topic_summaries ] skill_summaries = skill_services.get_all_skill_summaries() skill_summary_dicts = [ summary.to_dict() for summary in skill_summaries ] skill_ids_assigned_to_some_topic = ( topic_services.get_all_skill_ids_assigned_to_some_topic()) merged_skill_ids = (skill_services.get_merged_skill_ids()) topic_rights_dict = topic_services.get_all_topic_rights() for topic_summary in topic_summary_dicts: if topic_rights_dict[topic_summary['id']]: topic_rights = topic_rights_dict[topic_summary['id']] if topic_rights: topic_summary['is_published'] = ( topic_rights.topic_is_published) topic_summary['can_edit_topic'] = ( topic_services.check_can_edit_topic( self.user, topic_rights)) skill_ids_for_private_skills_by_user = [ skill_rights.id for skill_rights in ( skill_services.get_unpublished_skill_rights_by_creator( self.user_id)) ] skill_ids_for_unpublished_skills = [ skill_rights.id for skill_rights in ( skill_services.get_all_unpublished_skill_rights()) ] untriaged_skill_summary_dicts = [] mergeable_skill_summary_dicts = [] for skill_summary_dict in skill_summary_dicts: skill_id = skill_summary_dict['id'] if (skill_id not in skill_ids_assigned_to_some_topic) and ( skill_id not in skill_ids_for_unpublished_skills) and ( skill_id not in merged_skill_ids): untriaged_skill_summary_dicts.append(skill_summary_dict) if (skill_id in skill_ids_assigned_to_some_topic) and ( skill_id not in skill_ids_for_unpublished_skills) and ( skill_id not in merged_skill_ids): mergeable_skill_summary_dicts.append(skill_summary_dict) unpublished_skill_summary_dicts = [ summary.to_dict() for summary in (skill_services.get_multi_skill_summaries( skill_ids_for_private_skills_by_user)) ] can_delete_topic = (role_services.ACTION_DELETE_TOPIC in self.user.actions) can_create_topic = (role_services.ACTION_CREATE_NEW_TOPIC in self.user.actions) can_delete_skill = (role_services.ACTION_DELETE_ANY_SKILL in self.user.actions) can_create_skill = (role_services.ACTION_CREATE_NEW_SKILL in self.user.actions) self.values.update({ 'untriaged_skill_summary_dicts': untriaged_skill_summary_dicts, 'mergeable_skill_summary_dicts': mergeable_skill_summary_dicts, 'unpublished_skill_summary_dicts': unpublished_skill_summary_dicts, 'topic_summary_dicts': topic_summary_dicts, 'can_delete_topic': can_delete_topic, 'can_create_topic': can_create_topic, 'can_delete_skill': can_delete_skill, 'can_create_skill': can_create_skill }) self.render_json(self.values)